详解angular中如何监控dom渲染完毕


Posted in Javascript onJanuary 03, 2017

刚刚看到群上一个人说,他们公司凡是用angular和jquery插件一起用的人,都被解雇了,没看到这句话之前我很惭愧的说我有这样用过,其实angular的生态系统那么完善,完全可以不用去操作任何的dom元素都可以满足你的提倡开发需求。

那么如果真的需要用某个jquery插件,自己懒得封装angular插件或者懒得去找angular插件的时候,我们该怎么判断dom加载完毕。

有人说使用ng-init=""

亲测:表示没达到我想要的结果....

当然你如果使用window.onload=function(){}的话,不知道行不行,你可以去试试...

我们先了解一下angular的背景:

AngularJs是Google开源的前端JS框架。使用AngularJs, 我们能够容易地、健壮的开发出类似于Gmail一样的单页Web应用。AngularJs这个新兴的MVC前端框架,具有以下特点: MVC, 模块化,自动化双向数据绑定,语义化标签、依赖注入等。

angular和jquery有什么不同呢?

Jquery的主要目的是简化Js编写,专注于浏览器跨平台,主要用来操作DOM.

AngularJs主要关注Html数据的获取和呈现,以及应对日益复杂的Web应用需求,使得开发庞大的Web应用能够更加容易。

事实上,AnguarJs提供了一些对于Html进行加强的语义标签(directive),这些标签在浏览器加载完页面后被执行。举例来说:

<table id=”leaderBoard”>
     <thead>
       <tr>
         <th>Id</th>
         <th>Name</th>
         <th>Salary</th>
       </tr>
     </thead>
     <tbody>
       <tr ng-repeat="user in users">
         <td>{{user.Id}}</td>
         <td>{{user.Name}}</td>
         <td>{{user.Salary}}</td>
       </tr>
     </tbody>
</table>

上面的ng-repeat,就是一个directive, 相当于一个for循环。在页面加载完成后,AngularJs会遍历users数据对象,来呈现(render)出这个table中的内容。

如何实现在render完成之后,执行Js脚本

当我们使用Jquery结合AngulraJs使用的时候,希望在render完table后,执行一段js脚本,把JqTable应用到该table上。在实际开发中,会经常碰到这样的需求,希望能够捕获到AngularJs渲染完成页面的事件。

要达到这个目的,我们需要为当前的app自定义directive:

app.directive('onFinishRenderFilters', function ($timeout) {
  return {
    restrict: 'A',
    link: function(scope, element, attr) {
      if (scope.$last === true) {
        $timeout(function() {
          scope.$emit('ngRepeatFinished');
        });
      }
    }
  };
});

然后,在我们需要监控的地方,加上该directive:

<tr ng-repeat="user in users" on-finish-render-filters>
   <td>{{user.Id}}</td>
   <td>{{user.Name}}</td>
   <td>{{user.Salary}}</td>
</tr>

最后,补充上我们需要render完成之后的Js脚本:

$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
     //下面是在table render完成后执行的js
     var table = $("#leaderBoard").dataTable({
       bJQueryUI: true,
       "sScrollX": '100%',
     });
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
利用JS解决ie6不支持max-width,max-height问题的方法
Jan 02 Javascript
javaScript 页面自动加载事件详解
Feb 10 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
jquery果冻抖动效果实现方法
Jan 15 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
canvas绘制万花筒效果(代码分享)
Jan 20 Javascript
详解Node.js中exports和module.exports的区别
Apr 19 Javascript
Vuex之理解Getters的用法实例
Apr 19 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
微信小程序中换行空格(多个空格)写法详解
Jul 10 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
Jan 18 jQuery
JavaScript判断浏览器运行环境的详细方法
Jun 30 Javascript
Node.js学习入门
Jan 03 #Javascript
通过AngularJS实现图片上传及缩略图展示示例
Jan 03 #Javascript
DWR3 访问WEB元素的两种方法实例详解
Jan 03 #Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 #Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 #Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 #Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 #Javascript
You might like
php中chdir()函数用法实例
2014/11/13 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
Angular2库初探
2017/03/01 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
基于D3.js实现时钟效果
2018/07/17 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Django中url的反向查询的方法
2018/03/14 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
怎样客观的做好自我评价
2013/12/28 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
离婚协议书格式
2014/11/21 职场文书
早安问候语大全
2015/11/10 职场文书
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
python垃圾回收机制原理分析
2022/04/13 Python
一文搞懂Java中的注解和反射
2022/06/21 Java/Android