监听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闭包 懂不懂由你反正我是懂了
Oct 21 Javascript
js实现双向链表互联网机顶盒实战应用实现
Oct 28 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
详解JS面向对象编程
Jan 24 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
ajax在兼容模式下失效的快速解决方法
Mar 22 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
Mar 30 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
javaScript知识点总结(必看篇)
Jun 10 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
js实现时分秒倒计时
Dec 03 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
JS解析XML实例分析
2015/01/30 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
Python实现的tab文件操作类分享
2014/11/20 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
python ansible服务及剧本编写
2017/12/29 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript