這篇文章主要介紹了AngularJS監聽ng-repeat渲染完成的兩種方法,結合實例形式分析了AngularJS基於自定義指令及廣播事件實現監聽功能的相關操作技巧,需要的朋友可以參考下
本文實例講述了AngularJS監聽ng-repeat渲染完成的兩種方法。分享給大家供大家參考,具體如下:
監聽ng-repeat渲染完成有兩種方法
一、最實用的方法:
<ul class="pprt_content"> <li ng-repeat="src in imageHotList track by $index" ng-click='goGoodsDet(src.goodsId,src.merchId)' on-finish-render-filters="completeRepeat"> <img ng-src="{{productUrl}}{{src.imageName}}"> </li> </ul>
對應作用域controller:
$scope.completeRepeate= function(){ alert('1') }
自訂指令directive:
var app = angular.moduler('myApp',[]); app.directive('onFinishRenderFilters', ['$timeout', function ($timeout) { return { restrict: 'A', link: function(scope,element,attr) { if (scope.$last === true) { var finishFunc=scope.$parent[attr.onFinishRenderFilters]; if(finishFunc) { finishFunc(); } } } }; }])
二、使用廣播事件
#/* * Controller文件中的代码 * Setup general page controller */ MetronicApp.controller('simpleManageController', ['$rootScope', '$scope', 'settings','$http', function($rootScope, $scope, settings,$http) { $scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) { //下面是在table render完成后执行的js FormEditable.init(); Metronic.stopPageLoading(); $(".simpleTab").show(); }); }); MetronicApp.directive('onFinishRenderFilters', function ($timeout) { return { restrict: 'A', link: function(scope,element,attr) { if (scope.$last === true) { $timeout(function() { scope.$emit('ngRepeatFinished'); }); } } }; });
HTML
<!--HTML页面的代码,添加标签onFinishRenderFilters(格式有变):on-finish-render-filters--> <tr style="display: none" class="simpleTab" ng-repeat="simpleProduct in simpleProducts" on-finish-render-filters> <td> {{simpleProduct.productNo}} </td> </tr>
上面是我整理給大家的,希望未來會對大家有幫助。
相關文章:
#在vue-cli中使用webpack模板解決項目搭建及打包路徑問題
以上是在AngularJS有關監聽ng-repeat渲染問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!