我试着看他们的文档的Mozilla JSON stringify页,以及这里的SO和谷歌,但没有发现任何解释。我使用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" } ]
附加到我的$范围和为了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" } ]
我只是好奇什么是什么是$$哈希键,因为我预计更类似于以下来自stringify方法的东西:
[ { "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安全3.0.7
它不会导致我任何问题,但我想知道的$$哈希键的原因和原因
Angular添加了这个来跟踪你的更改,所以它知道什么时候需要更新DOM。
如果你使用angular.toJson(obj)而不是JSON.stringify(obj),Angular会剥离出这些内部使用的值。
此外,如果您更改重复表达式以使用{uniqueProperty}后缀的轨道,Angular将不必添加$$ hashKey。例如
<ul> <li ng-repeat="link in navLinks track by link.href"> <a ng-href="link.href">{{link.title}}</a> </li> </ul>
只要记住你需要“链接”。一部分的表达 – 我总是倾向于忘记。只跟踪href肯定不会工作。