首頁  >  文章  >  web前端  >  在AngularJS有關監聽ng-repeat渲染問題

在AngularJS有關監聽ng-repeat渲染問題

亚连
亚连原創
2018-06-11 17:00:361431瀏覽

這篇文章主要介紹了AngularJS監聽ng-repeat渲染完成的兩種方法,結合實例形式分析了AngularJS基於自定義指令及廣播事件實現監聽功能的相關操作技巧,需要的朋友可以參考下

本文實例講述了AngularJS監聽ng-repeat渲染完成的兩種方法。分享給大家供大家參考,具體如下:

監聽ng-repeat渲染完成有兩種方法

一、最實用的方法:

<ul class="pprt_content">
    <li ng-repeat="src in imageHotList track by $index" ng-click=&#39;goGoodsDet(src.goodsId,src.merchId)&#39; on-finish-render-filters="completeRepeat">
      <img ng-src="{{productUrl}}{{src.imageName}}">
    </li>
</ul>

對應作用域controller:

$scope.completeRepeate= function(){
alert(&#39;1&#39;)
}

自訂指令directive:

var app = angular.moduler(&#39;myApp&#39;,[]);
app.directive(&#39;onFinishRenderFilters&#39;, [&#39;$timeout&#39;, function ($timeout) {
    return {
      restrict: &#39;A&#39;,
      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(&#39;simpleManageController&#39;, [&#39;$rootScope&#39;,
&#39;$scope&#39;, &#39;settings&#39;,&#39;$http&#39;, function($rootScope, $scope, settings,$http) {
  $scope.$on(&#39;ngRepeatFinished&#39;, function (ngRepeatFinishedEvent) {
    //下面是在table render完成后执行的js
    FormEditable.init();
    Metronic.stopPageLoading();
    $(".simpleTab").show();
  });
});
MetronicApp.directive(&#39;onFinishRenderFilters&#39;, function ($timeout) {
  return {
    restrict: &#39;A&#39;,
    link: function(scope,element,attr) {
      if (scope.$last === true) {
        $timeout(function() {
          scope.$emit(&#39;ngRepeatFinished&#39;);
        });
      }
    }
  };
});

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中如何使用全域提示框元件?

在Angular4中如何使用ElementRef應用

#在vue中如何使用cli請求代理程式與專案打包方面的問題

#在vue-cli中使用webpack模板解決項目搭建及打包路徑問題

#在vue中bus全域事件中心(詳細教學)

以上是在AngularJS有關監聽ng-repeat渲染問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn