angular.toJson / JSON.stringify值不正确?

时间:2014-11-09 20:52:15

标签: javascript angularjs

我有一个附加到$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问题,我在寻找与数据绑定有关的问题吗?或者还有其他事情发生了吗?

1 个答案:

答案 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对象。)