监听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 相关文章推荐
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
Javascript中的isNaN函数使用说明
Nov 10 Javascript
javascript自适应宽度的瀑布流实现思路
Feb 20 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
Nov 17 Javascript
js实现延时加载Flash的方法
Nov 26 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
Vue拖拽组件列表实现动态页面配置功能
Jun 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 远程关机实现代码
2009/11/10 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
原生js调用json方法总结
2018/02/22 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
python 正则式使用心得
2009/05/07 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
退休感言
2014/01/28 职场文书
教师求职信范文
2014/05/24 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
订货会邀请函
2015/01/31 职场文书
开天辟地观后感
2015/06/09 职场文书
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
Python pyecharts绘制条形图详解
2022/04/02 Python
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android
Mysql如何查看是否使用到索引
2022/12/24 MySQL