从外部操纵Angular指令的DOM

时间:2015-10-08 12:11:49

标签: javascript angularjs dom angularjs-directive

方案

<div>
    <my-directive id='item.id' ng-reqeat='item in items'></my-directive>
</div>

我希望在my-directive完全加载后操作DOM。显然,控制器不能用于此,因为控制器是在DOM完成之前启动的。我已经提出了这个解决方案。

我的解决方案

<div>
    <my-directive id='item.id' ng-repeat='item in items'></my-directive>
    <manipulator-directive></manipulator-directive>
</div>

JS

app.directive('manipulatorDirective', ['$timeout', function($timeout) {
    return {
        restrict: 'E',
        link: function() {
            $timeout(function() {
                var element = $('#<id>');
                // code to manipulate the element
        }, 500);
    };
}]);

这很有效。但是,似乎这不是实现这项工作的正确方法。如果my-directive超过500ms,则manipulator-directive将会中断。

问题

  • 只有在link完成所有任务(manipulator-directive,添加到DOM后)才能确保my-directive link执行priority功能吗?
  • 针对此问题的任何不同解决方案?

注意

  • 我在声明my-directivemanipulator-directive时尝试<div lower-priority-directive higher-priority-directive></div> 。在这种情况下,它没有正确使用。因为它只适用于将多个指令放在同一个标​​签中。例如:

    {{1}}

0 个答案:

没有答案