(请原谅我,如果我的一些术语错了;我是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中监听加载事件?
答案 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)
}
};