详解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中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
js命名空间写法示例
Dec 18 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
在vue.js中抽出公共代码的方法示例
Jun 08 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
nestjs返回给前端数据格式的封装实现
Feb 22 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
smarty简单应用实例
2015/11/03 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
Python语言进阶知识点总结
2019/05/28 Python
python提取log文件内容并画出图表
2019/07/08 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
新浪微博实习心得体会
2014/01/27 职场文书
二手房购房意向书范本
2014/04/01 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
安全生产宣传标语
2014/06/06 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
党员自我评价范文2015
2015/03/03 职场文书
小孩不笨观后感
2015/06/03 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
Hive导入csv文件示例
2022/06/25 数据库