完全编译/渲染指令后的调用函数

时间:2012-11-06 20:18:16

标签: javascript angularjs

(请原谅我,如果我的一些术语错了;我是Angular的新手。)

我的指令看起来像这样:

return {
    template: "<p>{{size}}</p><div ng-transclude></div>",
    link: function(scope, element) {
        scope.size = element.outerWidth();
    }
};    

我希望scope.size的此设置在ng-transclude解决后生效。但是,当调用link函数时,情况并非如此。有没有办法在其内容中ng-transclude个子后面运行代码?我是否必须在DOM中监听加载事件?

1 个答案:

答案 0 :(得分:3)

$ timeout()将工作放在本机事件队列上,因此在浏览器呈现后将对其进行处理。所以试试这个:

return {
    transclude: true,
    template: "<p>{{size}}</p><div ng-transclude></div>",
    link: function(scope, element) {
        //scope.size = element.outerWidth();
        $timeout(function() {
            scope.size = element.outerWidth();
        },0)

    }
};