Ребята У меня есть следующая директива:
angular.module('blah').directive('someDirective', function () {
return {
scope: {
arrayParam1: '=arrayParam1',
arrayParam2: '=arrayParam2'
},
restrict: 'E',
templateUrl: '/my/path/to/someDirective.tpl.html',
link: function (scope, elem, attrs) {
//Some logic
scope.someEvent = function(){
//some logic
}
scope.$on('$viewContentLoaded', function () {
debugger;
scope.someEvent();
});
}
};
});
Теперь в HTML у меня есть ng-repeat над одним из массивов (например, arrayParam1), и я показываю некоторые вещи. Теперь моя цель, как вы можете предположить, это запустить scope.someEvent после полной загрузки HTML (завершена итерациями ng-repeat).
Хорошо, когда я использую $, он даже не останавливается на отладчике. Если я изменил его на $ watch, он остановится после того, как весь код будет закончен в JS, но HTML все равно не отображается, и он вызывает даже я хочу, прежде чем будет сделано представление.
Заранее спасибо.
используйте $ timeout.
$timeout(function () {
scope.someEvent();
});
это поможет.
или если вы не хотите использовать $ timeout, что вам нужно сделать, это сделать еще одну директиву родительской для этой директивы и выполнить или запустить функцию в фазе ссылок родителей
timeout
.