Вызов функции после загрузки HTML AngularJS

0

Ребята У меня есть следующая директива:

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 все равно не отображается, и он вызывает даже я хочу, прежде чем будет сделано представление.

Заранее спасибо.

  • 0
    Вы можете использовать тайм-аут вместо viewContentLoaded
  • 0
    Это звучит как проблема XY. Чего ты пытаешься достичь?
Показать ещё 4 комментария
Теги:
angularjs-directive

1 ответ

1

используйте $ timeout.

$timeout(function () {
   scope.someEvent();         
});

это поможет.

или если вы не хотите использовать $ timeout, что вам нужно сделать, это сделать еще одну директиву родительской для этой директивы и выполнить или запустить функцию в фазе ссылок родителей

  • 2
    Это плохая практика использовать timeout .
  • 0
    да это плохо. Но тогда он должен сделать другую директиву родителем этой директивы и выполнить или вызвать функцию в фазе связи родителей.

Ещё вопросы

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