javascript - AngularJS:$$hashkey 是可靠的 key 吗

标签 javascript arrays angularjs

问题

我对 Angular 数组/对象上的 $$hashkey 的属性很感兴趣。

  1. 每次重新加载时,每个生成的散列键是否相同? 页;快速测试告诉我是的,但我有点假设 不会吗?
  2. 如果您更新/添加到现有数组,旧哈希键的 保持一致?
  3. 如果以上为真,有没有一种方法可以使用 哈希键? - 因为我可以自己滚动,但在我重新创建轮子之前我想我会问。

示例:

View 包括:

  • 表单数据(示例有 1 个表单)
  • 元素数据(示例有 2 个元素)
  • 元素选项数据(例如每个元素有 2 个选项)

获取方法:

angular.get($$hashkey);

然后您将传递元素的哈希键,它会在完整数组中返回对该数组的引用。

最后的数据是:

{
    form_id: 1
    form_desc: 'xxx',
    form_name: 'name 1',
    Elements: [
        {
            element_id: 1,
            element_name: 'element1',
            default_value: null,
            disabled: "0",
            element_type: "image",
            ElementOptions: [
                {
                    show: false,
                    sort_order: 0,
                    value: "ar",
                },
                {
                    show: true,
                    sort_order: 1,
                    value: "rw",
                }
            ],
        },
        {
            element_id: 2,
            element_name: 'element2',
            default_value: null,
            disabled: "0",
            element_type: "image",
            ElementOptions: [
                {
                    show: false,
                    sort_order: 0,
                    value: "ar",
                },
                {
                    show: true,
                    sort_order: 1,
                    value: "rw",
                }
            ],
        }
    ]
}

最佳答案

$$hashkeys 只会针对函数和对象进行计算,因此如果您希望跟踪不是这些类型之一的任何内容,那么您就会受到限制。

$$Hashkeys 看起来像... (函数||对象):N ...

其中 N 只是一个正在调整的增量值 + 1 为每个计算的 $$HashKey。 因此,在许多情况下,这可能是跨页面加载的相同值。但是异步加载数据,在页面初始化查询多个数据源时会造成差异,返回顺序无法保证。在这种情况下,您必须整理所有异步数据,然后按特定顺序将该数据分配给您的范围,以确保 $$h​​ashkeys 一致。

在链接到我们的 DOM 的数组中移动项目(通过 ng-repeat)不会更改项目 $$hashkey。将其删除并重新添加即可。

我不会将 $$Hashkey 用于我自己的内部管理,因为它是 AngularJS 的内部。

关于javascript - AngularJS:$$hashkey 是可靠的 key 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381247/

相关文章:

javascript - Angular promise 然后发出

javascript - 如何在检查单选按钮时使用 PHP、JS 删除禁用的按钮

c - 关于 c 数组

ios - 如何在 Swift 中使用另一个数组中的元素过滤数组?

angularjs - 自举开关和 ng-model

angularjs - 设置 $rootScope.$state = $state; 的目的是什么?使用angular-ui ui-router?

javascript - Angular 将类添加到现有函数内的元素

javascript - 为什么我的子函数需要一个 'return' 语句来避免出错?父函数没有 'return'也没有报错

javascript - 可以从给定订单大小的数组中取出多少个项目

javascript - 指令加载时间非常长,检查加载时间的方法