Angular回到顶部按钮指令
2024-10-11 08:33:52
之前的分页代码指令化在线下测试没有问题,到服务器上就不运行了,所以那个先放一放。
今天来把“回到顶部”按钮指令化。首先是页面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函数。
最新文章
- strcpy 和 strcat
- 【读书笔记《Android游戏编程之从零开始》】10.游戏开发基础(View 游戏框架)
- ldd查询命令或软件共享的函数库(动态)
- IsPostBack
- CentOS7 service/chkconfig replace commands
- FZYZ-2071 A Simple Math Problem IX
- Android--图片的三级缓存策略
- 泛泰A870刷4.4专用英文版非触摸CWM Recovery 6.0.4.8(三版通刷)
- jquery mobile将页面内容当成弹框进行显示
- JavaEE(5) - JMS实现企业Pub-Sub消息处理
- Php设计模式(三):行为型模式part1
- Springmvc @CookieValue实用
- Easyui 修改jquery validatebox为英文校验提示为中文提示
- OI养老专题01:约瑟夫问题
- Java中经常使用缓存Cache机制的实现
- CAS使用心得
- MySQL存储过程-遍历游标的例子
- s2sh乱码一个小处理(新手按流程走)
- PHP判断文件是否被引入的方法get_included_files
- 算法题16 贪吃的小Q 牛客网 腾讯笔试题
热门文章
- java中 ";=="; 和 ";.equels";的区别
- sass 与 less 的区别与学习
- 对VC++6.0爱得深沉(三)静态库的制作与使用
- Java实现非递归删除目录
- Zabbix 2.2.x, 3.0.x SQL注射漏洞修复方法
- 自适应滤波——线性预测(LPC)
- Java 学习文章汇总
- icheck样式绑定与翻页保持
- oracle事物总结(转)
- mariadb 长链接时间限制导致队列消费进程崩溃