监听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 URL参数判断,确定菜单样式
May 31 Javascript
js里取容器大小、定位、距离等属性搜集整理
Aug 19 Javascript
JavaScript打印iframe内容示例代码
Aug 20 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
jQuery中replaceAll()方法用法实例
Jan 16 Javascript
Servlet实现文件上传,可多文件上传示例
Dec 05 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
vue-cli 构建骨架屏的方法示例
Nov 08 Javascript
介绍一下28个JS常用数组方法
May 06 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公用函数列表[正则]
2007/02/22 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
用python写扫雷游戏实例代码分享
2018/05/27 Python
python获取交互式ssh shell的方法
2019/02/14 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
原生python实现knn分类算法
2019/10/24 Python
Django 返回json数据的实现示例
2020/03/05 Python
.net开发工程师面试题
2014/02/25 面试题
少年闰土教学反思
2014/02/22 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
大学生工作自荐书
2014/06/16 职场文书
经营理念口号
2014/06/21 职场文书
大学生工作求职信
2014/06/23 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
早安问候语大全
2015/11/10 职场文书
MySQL基础(一)
2021/04/05 MySQL
用Python简陋模拟n阶魔方
2021/04/17 Python
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL