Сначала завершите рендеринг страницы перед выполнением функции в angularJS

0

У меня этот код в 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 полностью отображался перед выполнением кода.

Теги:
onload

1 ответ

1

Я думаю, что лучший способ - прослушивать область действия. $ 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>
  • 0
    Эй, спасибо, я искал похожие проблемы с моими, и они также предложили прослушать последний пункт. Спасибо!
  • 0
    stackoverflow.com/questions/15207788/… эта тема обеспечивает лучшее понимание.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню