国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

監聽angularJs列表數據是否渲染完畢的方法示例

2024-05-06 15:28:10
字體:
來源:轉載
供稿:網友

前端在做數據渲染的時候經常會遇到在數據渲染完畢后執行某些操作,這幾天就一直遇到在列表和表格渲染完畢后,執行點擊和選擇操作。對于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事件判定頁面沒有變化,所以不予執行!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 新龙县| 霍城县| 阜新| 郓城县| 开封县| 双柏县| 巫溪县| 凭祥市| 德江县| 华阴市| 疏附县| 赤水市| 谢通门县| 齐河县| 萍乡市| 陕西省| 牡丹江市| 凌云县| 青田县| 大足县| 奇台县| 安新县| 滦南县| 保德县| 翼城县| 察哈| 印江| 西乌珠穆沁旗| 福鼎市| 阿拉善盟| 静安区| 库尔勒市| 和田县| 丰城市| 鄂托克旗| 临朐县| 垦利县| 凤翔县| 天峨县| 金溪县| 平谷区|