【发布时间】:2016-08-02 08:53:54
【问题描述】:
伙计们,我有以下指令:
angular.module('blah').directive('someDirective', function () {
return {
scope: {
arrayParam1: '=arrayParam1',
arrayParam2: '=arrayParam2'
},
restrict: 'E',
templateUrl: '/my/path/to/someDirective.tpl.html',
link: function (scope, elem, attrs) {
//Some logic
scope.someEvent = function(){
//some logic
}
scope.$on('$viewContentLoaded', function () {
debugger;
scope.someEvent();
});
}
};
});
现在在 HTML 中,我对其中一个数组进行了 ng-repeat(例如,arrayParam1),并且我正在显示一些内容。现在,您可以假设我的目标是在 HTML 完全加载后触发 scope.someEvent(完成 ng-repeat 的迭代)。
好吧,当我使用 $on 时,它甚至不会在调试器上停止。如果我将其更改为 $watch ,它会在 JS 中的所有代码完成后停止,但 HTML 仍未呈现,它会在视图完成之前触发我想要的事件。
提前致谢。
【问题讨论】:
-
你可以使用 timeout 代替 viewContentLoaded
-
这听起来像是一个 XY 问题。你想达到什么目的?
-
@TheMechanic 嗯,是的,我知道超时,但我希望它尽可能清楚地做到这一点。 @Iso 目标比我写的例子复杂得多。我正在使用 ng-repeat 创建手风琴,在 HTML 中完成后,我希望动态地将元素添加到每个窗格(来自 js)。
-
@lazarov 那你为什么不在
ng-repeat里面添加元素呢? -
@lazarov 进行角度 dom 操作,最好使用数组而不是 dom 元素
标签: javascript html angularjs angularjs-directive