У меня этот код в javascript
$scope.sample = function(){
console.log(document.getElementById('foo'+modelId));
}
который возвращает false из-за того, что HTML еще не завершил отображение страницы. Смотри ниже:
<li ng-repeat="item in items" >
<input ng-model='foo'{{item.modelId}}
</li>
Я хочу избежать использования тайм-аута, есть ли способ обеспечить, чтобы HTML полностью отображался перед выполнением кода.
Я думаю, что лучший способ - прослушивать область действия. $ Last event и запускать любой код, который вам нужен.
Вот пример:
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>