AngularJS:$$hashkey是一个可靠的密钥吗

AngularJS: is $$hashkey a reliable key

本文关键字:一个 密钥 hashkey AngularJS      更新时间:2023-09-26

问题

我对$$hashkey在角度阵列/对象上的性质感兴趣。

  1. 每次重新加载页快速测试告诉我是的,但我有点想当然不会吧
  2. 如果您更新/添加到现有数组,那么旧的hashkey保持一致
  3. 如果上述情况成立,是否有一种方法可以使用hashkey?-当然,我可以自己滚动,但在我重新制作轮子之前,我想我应该问一下

示例:

视图包括:

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

提取方法:

angular.get($$hashkey);

然后,您将传递元素的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看起来像。。。(函数||对象):N…

其中,N只是一个增量值,对于每计算一个$$HashKey调整+1。因此,在许多情况下,页面加载之间的值可能相同。但是,当作为页面初始化的一部分查询多个数据源并且无法保证返回顺序时,异步加载数据会导致差异。在这种情况下,您必须整理所有异步数据,然后按特定顺序将这些数据分配给您的作用域,以确保$$哈希键一致。

在链接到DOM的数组中移动项目(通过ng repeat)不会改变项目$$hashkey。删除并重新添加会。

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

当我没有标识符时,我使用了这个内部私有属性。我认为,它很实用,但不推荐使用。