监听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 相关文章推荐
JQuery zClip插件实现复制页面内容到剪贴板
Nov 02 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
JS判断浏览器是否安装flash插件的简单方法
Sep 13 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
Vue中封装input组件的实例详解
Oct 17 Javascript
AjaxUpLoad.js实现文件上传
Mar 05 Javascript
微信小程序自定义带价格显示日历效果
Dec 29 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
教你完全理解ReentrantLock重入锁
Jun 03 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
Nov 07 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
php正则表达匹配中文问题分析小结
2012/03/25 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
JQuery插件开发示例代码
2013/11/06 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
layui导航栏实现代码
2017/05/19 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
TCP/IP模型的分界线
2012/12/01 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
综合素质的自我鉴定
2013/10/07 职场文书
药品促销活动方案
2014/02/14 职场文书
会计岗位职责范本
2015/04/02 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫
python区块链实现简版工作量证明
2022/05/25 Python