我有一段应该动态更新的$ 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已经在使用”
答案 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 discussion或this one。