我创建了一个在浏览器会话中存储数据的 Angular 应用程序。其中一个键的值恰好是一个字符串化的键:值对象。key:"{key:value, key:value, ...}"
当我从 sessionStorage 返回字符串时,我解析它以使用JSON.parse
or重新创建对象angular.fromJson
(两者都具有相同的结果)并将其存储为变量。在这一点上,我可以console.log
清楚地看到 JSON 对象的所有荣耀——正如我所期望的那样。当我将此对象分配为角度变量时,它会分配对象本身,而不是键:值。
var myParsedObj = JSON.parse(sessionStorage.getItem('my_object_string'));
console.log(myParsedObj); // returns Object {key:value, key:value, ...}
$scope.myParentObject.myObject = myParsedObj;
console.log($scope.myParentObject.myObject); // returns [object Object]
$scope.myObject = myParsedObj;
console.log($scope.myObject); // returns Object {key:value, key:value, ...}
更复杂的是,当我将 $scope 设置为 myParsedObj 时,它也莫名其妙地设置了 sessionStorage 项目,它也变成了 [object Object]。
此外,如果删除 myParentObject 并将 myObject 直接附加到 $scope,它可以正常工作并正确绑定数据。这是一个错误还是我做错了什么?有没有我可以采用的解决方法?我试过使用 angular.forEach 和 angular.extend 都没有成功。