详解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 相关文章推荐
下拉列表select 由左边框移动到右边示例
Dec 04 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
Mar 12 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
jquery解析json格式数据的方法(对象、字符串)
Nov 24 Javascript
js实现对ajax请求面向对象的封装
Jan 08 Javascript
vue2.0开发实践总结之疑难篇
Dec 07 Javascript
分析JS中this引发的bug
Dec 12 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
微信小程序实现canvas分享朋友圈海报
Jun 21 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读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python执行等待程序直到第二天零点的方法
2015/04/23 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
python执行精确的小数计算方法
2019/01/21 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
python批量修改xml属性的实现方式
2020/03/05 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
抄袭同学作业检讨书1000字
2014/11/20 职场文书
营销计划书范文
2015/01/17 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
导游词之吉林花园山
2019/10/17 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis
Python实现双向链表基本操作
2022/05/25 Python