我有一个附加到$scope
的对象,我要将其序列化为JSON。该对象已设置了数据绑定,因此有使用ng-model
的输入字段,而不是。{1}}。在尝试致电angular.toJson
时,这些值不是最新的。
奇怪的是,我认为我的价值观并没有像我想象的那样得到更新。为简单起见,我提出了一些console.log
次调用,console.log
的值是正确的,但它们不适用于JSON转换?我用JSON.stringify
测试了它,但结果是一样的。代码:
// This looks fine
console.log('Data:', $scope.obj);
var temp = angular.toJson($scope.obj);
// This looks fine as well...
console.log('Data:', $scope.obj);
// Yet the JSON string isn't correct and contains old data?
console.log('Data:', temp);
这是一个Angular问题,我在寻找与数据绑定有关的问题吗?或者还有其他事情发生了吗?
答案 0 :(得分:5)
在使用temp = angular.toJson($scope.obj);
变量之前尝试直接调用var temp
,例如点击特殊按钮或这样做:
var temp;
$scope.$watch('obj', function(newVal) {
temp = angular.toJson(newVal);
console.log('Data:', temp);
});
请注意,console.log()
可以在console.log()
调用时打印不在该状态的对象。 console.log()
仅为字符串/数字/布尔值打印实际状态。但是如果你调用console.log($scope.obj)
并且在$scope.obj
之后在代码中的某处更改了(通过ajax,事件或$scope.$apply()
加载信息),你将在控制台中看到更改的对象(这适用于DOM对象。)