监听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中find()方法用法实例
Jan 07 Javascript
JavaScript 学习笔记之变量及其作用域
Jan 14 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
简单谈谈Vue 模板各类数据绑定
Sep 25 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
jquery UI Datepicker时间控件冲突问题解决
Dec 16 Javascript
获取url中用&amp;隔开的参数实例(分享)
May 28 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
用实例说明python的*args和**kwargs用法
2013/11/01 Python
记录Django开发心得
2014/07/16 Python
python with statement 进行文件操作指南
2014/08/22 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
python返回数组的索引实例
2019/11/28 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
学校食堂采购员岗位职责
2013/12/05 职场文书
运动会领导邀请函
2014/01/10 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
小区门卫值班制度
2014/01/24 职场文书
顶撞老师检讨书
2014/02/07 职场文书
区域经理岗位职责
2015/02/02 职场文书
幼儿体育课教学反思
2016/02/16 职场文书