在angularJS

时间:2015-09-29 18:00:33

标签: html angularjs onload

我在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。

1 个答案:

答案 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>