如何在Angular JS中监视一个特定的嵌套数组项属性中的更改?

尼克约翰

我有一个看起来像这样的数组:

$rootScope.array = [{

                    "id":"a",
                    "title":"a",
                    "options":[
                                {
                                  "optId":"abc",
                                  "isInvalid":false
                                },
                                {
                                  "optId":"efg",
                                  "isInvalid":false
                                }
                              ]
                  },
                  {
                    "id":"b",
                    "title":"b",
                    "options":[
                                {
                                  "optId":"hij",
                                  "isInvalid":false
                                },
                                {
                                  "optId":"lmn",
                                  "isInvalid":false
                                }
                              ]
                  }];

在对' isInvalid'内部'属性进行任何更改时options,我想触发一个函数,该函数将评估整个数组并将某些属性设置为' true',另一些属性设置为' false'。

我知道使用$ watch对象等效项可以完成这种事情,但是我不确定我怎么能只监视' isInvalid'的变化而不允许我们说' optId'的变化。

在更大的方案中,我的意图是通过一组业务规则来验证整个阵列。因此,如果isInvalid第一个对象的“ ”属性更改为“ true”,我想确保isInvalid第二个对象的“ false设置为“ ”,依此类推。

所以,除了之外,还有其他更好的方法可以做到$watch,因为我对Angular还是比较陌生,我有点迷茫!

布劳略

如果您的结构不太大,那么精打细算就可以解决问题。

http://teropa.info/blog/2014/01/26/the-three-watch-depths-of-angularjs.html

如果您担心性能,并且取决于您的方案,则可以评估执行以下操作:

具有父/全局isInvalid标志,每当标志被标记为无效标志以及全局无效标志时,您只需监视全局无效标志,并且一旦标志无效遍历就可以找到无效元素。

我想到的其他选择可能是在阵列中的每个条目添加一个手表,但不确定是否会比Deepwatch解决方案具有更差的性能。

如果您不滥用深度监视,那么它可能是您的方案的一个很好的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB-如何验证同一文档的另一个嵌套数组项中是否包含嵌套数组项?

如何在 MongoDB 中的另一个嵌套数组中更新嵌套数组中的对象

如何在Angular JS中打印嵌套数组

如何在mongodb的对象中更新我的另一个嵌套数组的嵌套数组

如何在Redux状态的嵌套数组中仅更新一个值?

如何在嵌套数组中更新一个文档

如何在反应中映射嵌套的对象数组,一次一个子数组项

如何在vue中的另一个数组项中找到数组项?

如何在Angular中遍历嵌套数组

如何通过特定但深层嵌套的属性值对复杂数据结构的一个数组项进行排序?

如何将嵌套数组推入一个数组中

如何仅更新关联数组中嵌套对象的一个特定属性

在 angular-10 中递归地创建一个嵌套数组

如何使用一个公共字段提取数据并在javascript中制作嵌套数组

如何删除嵌套数组中的最后一个索引

如何根据另一个值在嵌套数组中查找值?

如何从嵌套数组响应正文中的一个 API 中获取变量?

一个如何更新猫鼬模型嵌套数组中的数字

如何取消嵌套数据并从SparkR中的数组获取第一个元素?

如何更改嵌套数组中的值

Javascript/Typescript:如何在深度嵌套的 javascript 数组中设置一个已知属性

如何在一个数组中读取两个/多个数组的嵌套数组并传递到图表

如何在PHP中使用多个数组中的一个嵌套嵌套数组生产JSON(用于匹配值)

如何在React中基于名称道具渲染一个数组项

如何根据php中嵌套数组的第一个值对多维数组进行排序?

如何检查一个 json 对象数组中的 id 是否存在于另一个 json 对象嵌套数组中?

如何在angular2 / typescript中使用.map或flatmap从嵌套数组中获取特定数据

如何在angular2的表单数组中显示嵌套数组数据?

如何根据第一个和最后一个嵌套数组mongo中的值过滤包含具有3级嵌套数组的文档的集合中的数据