我在javascript中有这段代码
$scope.sample = function(){
console.log(document.getElementById('foo'+modelId));
}
由于HTML尚未完成渲染页面而返回false。见下文:
<li ng-repeat="item in items" >
<input ng-model='foo'{{item.modelId}}
</li>
我想避免使用超时,是否有办法确保在执行代码之前完全呈现HTML。
答案 0 :(得分:1)
我认为最好的方法是听取范围。$ last事件,然后运行你需要的任何代码。
以下是一个例子:
angular.module('myApp', [])
.directive('repeatFinished', function() {
return function(scope, element, attrs) {
if (scope.$last) { // Here we can see that all ng-repeat items rendered
scope.$eval(attrs.repeatFinished);
}
}
});
而不是你的html,你可以简单地添加:
<li ng-repeat="item in items" repeat-finished="sample()">
//....
</li>