Я столкнулся с необычным поведением с ng-switch
, что я не могу понять. В верхней части моей страницы, у меня естьng-switch не обновляется автоматически
#content{"ng-switch" => "root.showAlert"}
%div.alert.ng-cloak#alert{"ng-switch-when" => "true"}
{{root.alert.message}}
%div.close
%a{:href => "#", "ng-click" => "dismissAlert()"}
=image_tag "icons/icon-close-black.png"
В одном из моих контроллеров (высокий уровень) У меня есть следующие действия
$scope.displayAlert = function(message) {
$scope.root.alert = {
message: message
};
$scope.root.showAlert = true;
if (!$scope.$$phase) {
$rootScope.$digest();
}
}
$ scope.root определена в $ rootScope так доступен ко всему.
Когда я меняю флаг root.showAlert
на значение true, я ожидаю увидеть предупреждение, поскольку оно должно смотреть эту переменную, однако это происходит не сразу, а вместо этого отображается, когда я изменяю что-то еще в приложении, выполняя любые другие действия.
При добавлении моего $rootScope.$digest()
он работает и отображается сразу, но мне было интересно, почему он не сделает это сам по себе?
увольнении:
$rootScope.dismissAlert = function() {
$scope.root.showAlert = false;
delete $scope.root.alert;
}
предоставьте функцию rejectAlert(). Моя ставка заключается в том, что вы получаете доступ к неправильной области. – Heinrich
У меня нет проблем с отключением предупреждения, но только при его отображении. Но, как я уже сказал, он отображается, он просто принимает либо явный вызов дайджеста, либо какое-то другое действие для запуска – PaReeOhNos
в порядке. Было бы неплохо увидеть фактический HTML. Может быть, больше пользователей смогут помочь, если вы можете отправлять HTML вместо haml. И во-вторых: угловой работает над этим результатом html, и если haml делает что-то странное в этот момент, я не мог знать. – Heinrich