В следующей директиве я выполняю довольно длительную операцию, поэтому я хочу отображать крутящий момент загрузки за это время. Я использовал ng-show и переменную isLoading в области действия директивы. Однако прядильщик никогда не показывает, хотя isLoading имеет значение true.angularjs: пользовательский интерфейс, не обновляющий внутреннюю директиву
Что случилось с моим кодом?
angular.module('shared.directives').directive("xmlVisualizer", ['$rootScope', function ($rootScope) {
return {
restrict: 'E',
template: '<div ng-show="isLoading" class="center span10"><i class="icon-spinner icon-6x">chargement du fichier...</i> </div> <div class="center span10" ng-show="!isLoading"> <h4>Détail du fichier {{title}}</h4> <pre id="test" class="prettyprint"></pre></div>',
scope: {
model: '=',
title: '='
},
link: function (scope, element, attrs) {
if (scope.model) {
scope.isLoading = true;
scope.xml = vkbeautify.xml(scope.model);
$("#test").text(scope.xml);
$("#test").html(prettyPrintOne($("#test").html(), 'xml'));
scope.isLoading = false;
}
}
}
}]);
Это не похоже на меня. Зачем мне смотреть весь масштаб? и это не приведет к обновлению пользовательского интерфейса. Я попробовал scope. $ Apply(), хотя и не работал, так как уже происходит переваривание. – Sam
Угадайте, что вам нужно явно наблюдать за областью действия внутри функции ссылок. U может рассмотреть возможность регистрации аргументов вашей функции ссылок, чтобы узнать, сколько раз она вызывается. Логика имела бы это, что он будет вызываться каждый раз, когда происходит изменение области видимости, но на самом деле он называется только при инициализации или изменении конкретного html в DOM. Никакое изменение области действия фактически не вызывает функцию связи, которую вы написали. Также каждое изменение в сфере действия не будет вызывать вторую функцию внутри аргумента $ watch. Я вывел все это через консольное ведение журнала. Может быть не на 100% прав. Попытка помочь –
@ Да, он не смотрит всю сферу, просто модель. 'function (scope) {return scope.model}' эквивалентно '' model'' – finishingmove