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