详解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 相关文章推荐
jQuery select控制插件
Aug 17 Javascript
仿微博字符限制效果实现代码
Apr 20 Javascript
JSON辅助格式化处理方法
Mar 26 Javascript
表单序列化与jq中的serialize使用示例
Feb 21 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
Jan 22 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 Javascript
超链接怎么正确调用javascript函数
May 23 Javascript
js只执行1次的函数示例
Jul 20 Javascript
javascript代码调试之console.log 用法图文详解
Sep 30 Javascript
angularJs 表格添加删除修改查询方法
Feb 27 Javascript
详解Vue用cmd创建项目
Feb 12 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用mysql数据库存储session的代码
2010/03/05 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
javascript document.compatMode兼容性
2010/02/23 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python同时处理多个异常的方法
2020/07/28 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
Ejb技术面试题
2015/04/29 面试题
领导党性分析材料
2014/02/15 职场文书
党员查摆剖析材料
2014/10/10 职场文书
捐资助学感谢信
2015/01/21 职场文书
食品安全主题班会
2015/08/13 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang