Это довольно печально известная проблема с Angular, и есть так много статей, объясняющих это в Интернете, но, пожалуйста, просто выслушайте меня. Я читал их, и они не работали. У меня есть следующее (я просто упрощающее здесь):AngularJS вид не обновляется при изменении модели
Вид:
<div ng-hide="{{beHidden}}"></div>
Контроллер:
// Set beHidden to initially be false (This works and reflects when set to true as well)
$scope.beHidden = false;
// First we display a popup asking the user to choose whether the div should be hidden
var confirmPopup = $ionicPopup.confirm({
title: 'Hidden Div',
template: 'Do you want to hide the div?',
cancelText: 'No',
okText: 'Yes'
}).then(function(res) {
if(res) {
// User chose to hide div
$timeout(function() {
$scope.beHidden = true;
});
} else {
// User chose NOT to hide div
$timeout(function() {
$scope.beHidden = false;
});
}
});
Теперь, когда не работает. Я читал, что должен использовать метод $scope.$apply
, но когда я это сделал, я получил ошибку $digest already in progress
. К этому они говорят, что вы должны фактически использовать $timeout(function() { // do stuff });
И хотя это не вызывает никаких ошибок, представление просто не обновляется, чтобы скрыть div, когда это то, что выбрал пользователь. Любые идеи?
Кроме того, да я инъекционного $ таймаут в правильно контроллер ...
Хорошо, я немного запутался сейчас, хотя. Я новичок в Angular и все, но не {{}} как вы связываете модели на ваш взгляд? Что мне здесь не хватает? Кроме того, что происходит, когда я хочу сделать ng-hide = "{{! BeHidden}}"? – Tiwaz89
yes, '{{}}' эти скобки используются для связывания моделей в представлении, но только между тегами html, а не в атрибутах, предоставляемых угловыми. – ianveshi
, например, вы можете использовать '