ホームページ  >  記事  >  ウェブフロントエンド  >  AngularJS での ng-repeat レンダリングのリスニングに関連する問題

AngularJS での ng-repeat レンダリングのリスニングに関連する問題

亚连
亚连オリジナル
2018-06-11 17:00:361432ブラウズ

この記事では、AngularJS が ng-repeat レンダリングの完了を監視するための 2 つの方法を主に紹介し、カスタム命令とブロードキャスト イベントに基づいて AngularJS の関連操作テクニックを分析して、必要な友人が参照できるように監視機能を実装します。この記事の例へ

AngularJS が ng-repeat レンダリングの完了を監視するための 2 つの方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

ng-repeat レンダリングの完了を監視するには 2 つの方法があります

1. 最も実用的な方法:

<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>

対応するスコープ コントローラー:

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

カスタム命令ディレクティブ:

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();
          }
        }
      }
    };
}])

2. ブロードキャストイベントを使用する

/*
* 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 のバス グローバル イベント センター (詳細なチュートリアル)

以上がAngularJS での ng-repeat レンダリングのリスニングに関連する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。