javascript - 更改模型时 AngularJS View 不更新

标签 javascript angularjs ionic-framework

这是 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/

相关文章:

javascript - 如何使用 Protractor 获取浏览器 API 调用?

javascript - 拖动子网格布局也倾向于拖动父网格布局

javascript - 地理定位脚本不起作用

angularjs - 触摸事件不适用于 Angular 中的 Google map

javascript - 如何等待http请求完成? Javascript

android - 找不到 support-v4.aar (com.android.support :support-v4:26. 1.0)

android - @ionic/angular 4.0.0-beta.13 : Not allowed to load local resource : with webview 2. 2.3 - ionic CLI 4.3.1

javascript - 添加/删除多个输入字段

javascript - Angular 2 window.scrollTo 不工作?

javascript - 比较两个数组,如果两个数组中至少有一个则返回真