如何在Angularjs中的ng-repeat内初始化所有控制器后加载所有内容后捕获事件?

时间:2015-03-06 10:58:03

标签: javascript angularjs callback controller angularjs-ng-repeat

<!-- Begin page content part of a pageCtrl -->
<div class="container" ng-init="pageInit();">
   <div class="template {{block.type}}" ng-repeat="block in pageBlocks" my-repeat-directive>
     <div ng-controller="templateCtrl" ng-include src="'partials/components/' + block.type + '.html'" ng-init="initTemplate(block);"></div>
   </div>
</div>

在我的ng-repeat中,我使用 templateCtrl 动态初始化一些小模板,从我的 pageCtrl 范围传递一些数据。 我的目标是在Angularjs加载和编译我的模板的所有内容后能够执行一些javascript。

但目前我找不到“毕竟被编译”事件来管理一些简单的回调操作。

我试过指令&amp;在ng-repeat上的最后重复操作,我尝试了范围。$ watch,$ timeout,$ scope。$ on('$ viewContentLoaded')...但是任何工作行为。

任何想法,建议?提前谢谢

1 个答案:

答案 0 :(得分:0)

经过一些其他尝试后,我最终在这个解决方案中,这似乎工作得非常好。

这在html中

<div ng-controller="templateCtrl" ng-include src="'partials/components/' + block.type + '.html'" ng-init="initTemplate(block);" template-directive></div>

这是在javascript中

app.directive('templateDirective', function($timeout){
  return {
    restrict: "EA",
    compile: function(element, attributes){
      return {
        post: function(scope, element, attributes, controller, transcludeFn){

          if(scope.$last){
            $timeout(function(){
              //operations in the callback
            }, 250);
          }
        }
      };
    }
  };
});
专家们同意吗?