监听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 函数调用规则
Aug 26 Javascript
IE中createElement需要注意的一个问题
Jul 13 Javascript
jQuery学习基础知识小结
Nov 25 Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 Javascript
JavaScript中document.forms[0]与getElementByName区别
Jan 21 Javascript
javascript转换静态图片,增加粒子动画效果
May 28 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
Apr 12 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 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缓存类分享     php缓存机制
2014/01/22 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
详解JavaScript 事件流
2020/09/02 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
Python通过poll实现异步IO的方法
2015/06/04 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
python使用Tesseract库识别验证
2018/03/21 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python模块future用法原理详解
2020/01/20 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
社区庆八一活动方案
2014/02/02 职场文书
高中军训感言400字
2014/02/24 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
《花钟》教学反思
2016/02/17 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL