范围不是$ apply use的更新

时间:2014-08-26 13:02:02

标签: javascript node.js angularjs angularjs-scope

我有一段应该动态更新的$ scope文本。

<span ng-bind="user.balance"></span>

按下按钮后,会收到新的余额值,并应在此处显示。

$http.post('/transaction/send', transaction).success(function(sender) {
          console.log("http response");
          $scope.user = sender;
          console.log($scope.user.balance);
          $timeout(function() {$scope.$apply(); console.log("apply used");}, 1000);
        });

在控制台日志中,接收并正确显示任何内容,但它仍未更新视图中的范围。我究竟做错了什么? 我正在使用$ timeout来摆脱“$ digest已经在使用”

1 个答案:

答案 0 :(得分:2)

您应该使用angular.extend(dst, src)而不是为$scope.user变量指定新对象。通过这样做,您将把新属性合并到旧对象中;这将使你的绑定工作。最后,你应该有这样的事情:

$http.post('/transaction/send', transaction).success(function(sender) {
      console.log("http response");
      angular.extend($scope.user, sender);
      console.log($scope.user.balance);
});

请注意,这只是浅层合并,对于深度合并,您应该查看this discussionthis one