为什么ng-show似乎不再知道变量已被更新?

时间:2015-02-26 13:59:30

标签: angularjs

所以我有一个简单的ng-show。

 <div class="floatLeft" ng-show="loadingContactEdit">
       <img src="/Content/css/images/throbber_16x16.gif" />
 </div>

然后当单击编辑按钮时,我运行以下代码,当我说$ scope.loadingContactEdit = true时,没有问题让img显示但我永远无法隐藏它,即使回调看起来很好而且我可以看到第一个控制台日志消息是真的然后第二个是假的 - 就像iff不知何故通知在回调后没有工作?我不确定是什么问题。

$scope.openContactEditForm = function() {
    $scope.loadingContactEdit = true;
    ngDialog.open({
        template: '/Contact/CreateAngularModal/' + $scope.quickScreenDataContract.PersonId + '?caseId=' + $scope.quickScreenDataContract.CaseId,
        preCloseCallback: function () {
            hideThrobber();
        }
    });
};

var hideThrobber = function() {
    console.log("Hide loading message..." + $scope.loadingContactEdit);
    $scope.loadingContactEdit = false;
    console.log("Hide loading message..." + $scope.loadingContactEdit);
}

1 个答案:

答案 0 :(得分:1)

你正在调用Angular以外的api。您应该调用$scope.$apply()以告知角度值已更改并且必须更新视图:

var hideThrobber = function() {
  console.log("Hide loading message..." + $scope.loadingContactEdit);
  $scope.$apply(function(){
    $scope.loadingContactEdit = false;
  )}
  console.log("Hide loading message..." + $scope.loadingContactEdit);
}