У меня есть директива, которая определяет функцию innerBarStyle()
на стадии линии связи и связывает его с областью: Цикл обработки AngularJs запускается после вызова любой функции?
restrict : 'EA',
scope: {
values: '='
},
link: function(scope, elements, attributes){
scope.innerBarStyle = function(value){
console.count("innerBarStyleCounter");
return {
width: 10px;
};
}),
templateUrl: 'template.html'
};
Функция не делает ничего, кроме подсчета количества раз он запускается на выполнение и возвращает объект.
Теперь, в шаблоне директивы шаблона, я вызываю эту функцию с помощью выражения. Что-то вроде <div ... ng-style=innerBarStyle(someValueInCurrentScope)><div>
То, что я получаю на практике, это бесконечный цикл, который вызывает повторную вызов вышеупомянутой функции. После некоторых исследований я обнаружил, что это обычно происходит, когда вызываемая функция неявно или явно запускает цикл дайджеста (например, если он использует службу $ http). Но в этом случае функция действительно ничего не делает. Возможно ли, что цикл дайджеста запускается где-то в другом месте или я что-то упускаю? BTW, я знаю, что были бы лучшие способы добиться того же результата, мне просто интересно, как все работает здесь.
Можете ли вы опубликовать свои директивы? – dfsq
Если вы используете '$ watch' без прослушивателя, вы узнаете, когда происходит' 'digest''. – user3632710
@dfsq Извините, что не могу. Это код моей компании. Позвольте мне добавить некоторые детали, хотя. –