这是 Angular 的一个臭名昭著的问题,网络上有很多文章对此进行解释,但请听我说完。我读过那些,但它们没有用。我有以下内容(我只是在这里简化):
查看:
<div ng-hide="{{beHidden}}"></div>
Controller :
// 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 });
虽然这不会引发任何错误,但 View 不会更新以隐藏div 当用户选择时。有什么想法吗?
此外,是的,我正在正确地将 $timeout 注入(inject) Controller ......
最佳答案
替换:
<div ng-hide="{{beHidden}}"></div>
与:
<div ng-hide="beHidden"></div>
此外,无需将 beHidden
的更新包装在 $timeout
调用中。
关于javascript - 更改模型时 AngularJS View 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607499/