我从Kato's fiddle分叉了一个规范化示例,并将其更新为当前版本的AngularFire和Firebase,您可以see it here。我测试了一下,以便更好地理解$firebaseObject
和$firebaseArray
的工作原理,我真的很了解它。
toJSON
以外的$firebaseObject
除外。
所以我在控制器中有这个小代码:
$scope.singlePost = singleMergedPost('post2');
console.log('singlePost', $scope.singlePost);
输出通常是:
{
"postData": {
"bla": "blubb",
"dateCreated": 1397584465,
"title": "Another cool website",
"upvotes": 1,
"url": "http://www.google.com",
"user": "simplelogin:2"
},
"userData": {
"email": "kato@firebase.com",
"jobTitle": "Awesome Dude",
"name": "Kato Richardson"
}
}
但是当我将toJSON
添加到$extend
时,输出为:
{
"bla": "blubb",
"dateCreated": 1397584465,
"title": "Another cool website",
"upvotes": 1,
"url": "http://www.google.com",
"user": "simplelogin:2"
}
$ scope.singlePost实际上包含相同的数据,但我想知道:
<pre ng-bind="singlePost | json"></pre>
仅显示postData
数据?答案 0 :(得分:2)
<强> 1。的toJSON 强>
.toJSON()
来删除以$firebaseObject
或$firebaseArray
开头的$
或$$
的属性和方法。它将对象序列化为有效的JSON数据。 <pre>
div中的数据以进行调试,而不使用$ methods。<强> 2。数据差异
<pre ng-bind="singlePost | json"></pre>
仅显示postData,因为只有postData
的{{1}}属性(this
)被传递到行{$firebaseObject
中的.toJSON()
方法1}} $firebaseUtils.toJSON(this.postData);
postData
和userData
属性)相比
console.log('singlePost', $scope.singlePost);
,您应该会看到相同的结果。