3

(如果我弄错了一些术语,请原谅我;我是 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在其内容中的 subs 之后运行代码?我必须监听 DOM 中的加载事件吗?

4

1 回答 1

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)

    }
};    
于 2012-12-30T04:08:06.870 回答