ブラウザー セッションにデータを保存する Angular アプリを作成しました。これらのキーの 1 つの値は、たまたま文字列化された key:value オブジェクトです。key:"{key:value, key:value, ...}"
sessionStorage から文字列を返すと、それを解析してJSON.parse
orを使用してオブジェクトを再作成しangular.fromJson
(どちらも同じ結果になります)、変数として格納します。この時点で、JSON オブジェクトをはっきりと見ることができconsole.log
ます。期待どおりです。このオブジェクトを角度変数として割り当てると、キー:値ではなく、オブジェクト自体が割り当てられます。
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 を使用してみましたが、成功しませんでした。