问题描述
Angular 添加了这个来跟踪你的变化,所以它知道什么时候需要更新 DOM。
如果您使用angular.toJson(obj)
而不是,JSON.stringify(obj)
那么 Angular 会为您去除这些内部使用值。
此外,如果您将重复表达式更改为使用track by {uniqueProperty}
后缀,Angular 根本不需要添加$$hashKey
。例如
<ul>
<li ng-repeat="link in navLinks track by link.href">
<a ng-href="link.href">{{link.title}}</a>
</li>
</ul>
永远记住你需要“链接”。表达的一部分-我总是倾向于忘记这一点。只是track by href
肯定行不通。
解决方法
我曾尝试查看他们文档的Mozilla JSON stringify页面以及 SO 和
Google 上的此处,但没有找到任何解释。我已经使用JSON.stringify
了很多次,但从未遇到过这个结果。
我有一个 JSON 对象数组:
[
{
"param_2": "Description 1","param_0": "Name 1","param_1": "VERSION 1"
},{
"param_2": "Description 2","param_0": "Name 2","param_1": "VERSION 2"
},{
"param_2": "Description 3","param_0": "Name 3","param_1": "VERSION 3"
}
]
它附在我的$scope
. 为了将POST
它们作为一个参数,我使用了该JSON.stringify()
方法并收到以下内容:
[
{
"param_2": "Description 1","param_1": "VERSION 1","$$hashKey": "005"
},{
"param_2": "Description 2","param_1": "VERSION 2","$$hashKey": "006"
},{
"param_2": "Description 3","param_1": "VERSION 3","$$hashKey": "007"
}
]
我只是对$$hashkey
属性到底是什么感到好奇,因为我期望该方法中的内容更类似于以下内容stringify
(即,没有$$hashkey
):
[
{
"1":{
"param_2": "Description 1","param_1": "VERSION 1"
},"2":{
"param_2": "Description 2","param_1": "VERSION 2"
},"3":{
"param_2": "Description 3","param_1": "VERSION 3"
}
}
]
我不确定这是否是一个因素,但我正在使用以下内容:
- Angularjs 1.1.5,
- jQuery 1.8.2
- spring 3.0.4
我还在服务器端使用 Spring security 3.0.7。
它没有给我带来任何问题,但我想知道原因和原因$$hashkey