监听angularJs列表数据是否渲染完毕的方法示例


Posted in Javascript onNovember 07, 2018

前端在做数据渲染的时候经常会遇到在数据渲染完毕后执行某些操作,这几天就一直遇到在列表和表格渲染完毕后,执行点击和选择操作。对于angularjs处理这类问题,最好的方式就是指令 directive。

首先,定义指令:

app.directive('onfinishrenderfilters', function ($timeout) {
  return {
    restrict: 'A',
    link: function (scope, element, attr) {
      if (scope.$last === true) {  //判断是否是最后一条数据
        $timeout(function () {
          scope.$emit('ngRepeatFinished'); //向父级scope传送ngRepeatFinished命令
        });
      }
    }
  };
});

其次,指令定义完毕后,需要将指令添加到迭代的标签内,此处是<tr>标签

<div class="fixed-table-container" style="margin-right: 0px;">
  <table class="table table-hover lamp-table">
    <thead>
    <tr>
      <th></th>
      <th style="text-align: center; " data-field="name_device-id" tabindex="0"
        ng-repeat="i in provider.geoZoneListHead track by $index" ng-hide=i.bol>
        <div class="th-inner sortable " style="padding-right: 10px">{{i.name}}
        </div>
        <div class="fht-cell" style="width: 101px;"></div>
      </th>

    </tr>
    </thead>
    <tbody>
    <tr ng-repeat="i in provider.geoZoneList" onfinishrenderfilters>
      <td><input data-index="0" name="btSelectItem" type="radio"
            value="{{$index}}" ng-click="selectInput($index)"></td>
      <td class="nameId0">{{$index+1}}</td>
      <td class="nameId1">{{i.geoZoneName}}</td>
      <td class="nameId2">{{i.description}}</td>
      <td class="nameId3">{{i.totalNumberOfMembers}}</td>
      <td class="nameId4">{{i.country}}</td>
      <td class="nameId5">{{i.lastUpdateDate}}</td>
    </tr>
    </tbody>
  </table>
</div>

最后,在最后一条数据渲染完毕后,brodercast是向子级scope传送事件(命令)。而on()是监听事件,监听brodercast是否将事件(命令)传送回来,若事件已传送回来,则表示数据已经渲染完毕,就可以执行以后的其他操作了

$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
  var btnList = $("input[name='btSelectItem']");
  btnList.eq(0).attr("checked","checked");
  $scope.provider.detalOutlet();
});

在没有angularJs的时候一般通过监听onLoad事件来确定页面是否加载完成。但在使用angularJs来渲染页面时,onLoad事件不能保证angularJs是否完成了对页面的渲染。最常见的情况就是用angularJs来加载某个数据Table时,我们得等这个Table加载完之后对Table上的数据进行操作,但因为这个Table是由AngularJs渲染的,所以得找到某个方法获得AngularJs渲染完毕后的事件。 这也就是为什么onload事件在angularJs框架上数据刷新不执行的一个原因,因为angularJs是数据驱动,根据数据的更新进行页面的刷新,而整体页面已经加载完成(数据更新,angularJs数据渲染,页面不会重新加载),故onload事件判定页面没有变化,所以不予执行!

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

Javascript 相关文章推荐
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
JavaScrip常见的一些算法总结
Dec 28 Javascript
javascript正则表达式总结
Feb 29 Javascript
微信小程序 Audio API详解及实例代码
Sep 30 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
Node.js使用gm拼装sprite图片
Jul 04 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
深入了解js原型模式
May 30 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 Javascript
JS对象属性的检测与获取操作实例分析
Mar 17 Javascript
详解react native页面间传递数据的几种方式
Nov 07 #Javascript
微信小程序使用npm支持踩坑
Nov 07 #Javascript
Angular Material Icon使用详解
Nov 07 #Javascript
详解Webpack loader 之 file-loader
Nov 07 #Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 #Javascript
javascript动态创建对象的属性详解
Nov 07 #Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 #Javascript
You might like
php获取twitter最新消息的方法
2015/04/14 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
常见python正则用法的简单实例
2016/06/21 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
django连接oracle时setting 配置方法
2019/08/29 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
企业统计员岗位职责
2013/12/13 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
机械系毕业生求职信
2014/05/28 职场文书
餐馆开业致辞
2015/08/01 职场文书
同学聚会开幕词
2019/04/02 职场文书
2019银行竞聘书
2019/06/21 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby