在指令中我需要具有元素的宽度,但是此元素是在ng-repeat
中创建的。因此,当我的link
函数中的代码运行时,ngRepeat尚未执行。我试图使用$timeout
推迟一些事情,但这没有帮助
JS:
link: function (scope, element) {
$timeout(function () {
var width = $(element.find('li')).width(); // the li elements do not exist
});
}
HTML:
<ol>
<li ng-repeat="item in items">
<my-item>.....</my-item>
</li>
</ol>
我无法使用<ol>
元素,因为<my-item>
具有边距/填充等样式。
有什么建议吗?
答案 0 :(得分:3)
<ol>
<li ng-repeat="item in items" on-complete>
<my-item>.....</my-item>
</li>
</ol>
-
.directive('onComplete', function() {
return function(scope, element, attrs) {
angular.element(element).css('color','blue');
if (scope.$last){
window.alert("im the last!");
}
};
})
答案 1 :(得分:1)
您可以使用scope.$last to generate an event when the last item is done或只运行您需要的代码。
您可能还想考虑您的设计。你的问题可以有任何CSS解决方案吗?如果没有继续。