之前的分页代码指令化在线下测试没有问题,到服务器上就不运行了,所以那个先放一放。

  今天来把“回到顶部”按钮指令化。首先是页面html:

    <!--回弹按钮-->
<back-button></back-button>

  指令的单词在html中使用横杠分隔,而在js代码中使用驼峰法,没毛病,简单不解释:

/*  回弹按钮指令
* */
app.directive('backButton', function() {
return {
restrict: 'E',
template: '<button id="back-button">' +
'<img src="./img/icon_top.png"/>' +
'</button>',
replace: true,
//功能
compile: function (elem, attr) {
elem.bind('click', function () {
$('html,body').animate({scrollTop:0}, 300);
});
//窗口
$(window).scroll(function() {
var toTop = $(window).scrollTop();
if( toTop > 50) {
elem.fadeIn(100);
} else {
elem.fadeOut(200);
}
});
}
}
});

  值得注意到是,网上的教程的dom绑定是在link中实现,其实这是不好的。angular应用在启动后会经历两个阶段,一个是编译compile,一个是链接link。编译阶段会遍历整个HTML文档,编译各个指令和模板,一旦编译阶段完成,便会调用编译函数,编译函数的参数包含有访问指令声明所在的元素(tElemente)及该元素其他属性(tAttrs)的方法。如果设置了compile函数,说明我们希望在指令和实时数据被放到DOM中之前进行DOM操作,在这个函数中进行诸如添加和删除节点等DOM操作是安全的。

  DOM事件监听器的注册:这个操作应该在link函数中完成。注意:compile和link选项是互斥的。如果同时设置了这两个选项,那么会把compile所返回的函数当作链接函数,而link选项本身则会被忽略。就如上述代码中返回的就是link函数。

最新文章

  1. strcpy 和 strcat
  2. 【读书笔记《Android游戏编程之从零开始》】10.游戏开发基础(View 游戏框架)
  3. ldd查询命令或软件共享的函数库(动态)
  4. IsPostBack
  5. CentOS7 service/chkconfig replace commands
  6. FZYZ-2071 A Simple Math Problem IX
  7. Android--图片的三级缓存策略
  8. 泛泰A870刷4.4专用英文版非触摸CWM Recovery 6.0.4.8(三版通刷)
  9. jquery mobile将页面内容当成弹框进行显示
  10. JavaEE(5) - JMS实现企业Pub-Sub消息处理
  11. Php设计模式(三):行为型模式part1
  12. Springmvc @CookieValue实用
  13. Easyui 修改jquery validatebox为英文校验提示为中文提示
  14. OI养老专题01:约瑟夫问题
  15. Java中经常使用缓存Cache机制的实现
  16. CAS使用心得
  17. MySQL存储过程-遍历游标的例子
  18. s2sh乱码一个小处理(新手按流程走)
  19. PHP判断文件是否被引入的方法get_included_files
  20. 算法题16 贪吃的小Q 牛客网 腾讯笔试题

热门文章

  1. java中 &quot;==&quot; 和 &quot;.equels&quot;的区别
  2. sass 与 less 的区别与学习
  3. 对VC++6.0爱得深沉(三)静态库的制作与使用
  4. Java实现非递归删除目录
  5. Zabbix 2.2.x, 3.0.x SQL注射漏洞修复方法
  6. 自适应滤波——线性预测(LPC)
  7. Java 学习文章汇总
  8. icheck样式绑定与翻页保持
  9. oracle事物总结(转)
  10. mariadb 长链接时间限制导致队列消费进程崩溃