聚合物1.0 DEEP路径观察(多级)

时间:2015-11-21 01:53:09

标签: polymer polymer-1.0 observers

我遇到一个问题,我需要观察对JSON对象的DEEP更改。例如,对象可能看起来像下面显示的 proj 对象。 规范 子属性是可引用的(应始终存在)。但是, specs 下所有不同级别的所有更深层次的子属性都不一定被命名为任何定义的(每个级别都是未知类型的字典)。尽管如此,我还需要知道 specs 的任何深度子属性值何时更改,或者添加任何新的子属性,甚至降至最低级别(从规格下调3个级别)在这种情况下)。

{proj: 
        { id: "foo",
          specs: { 
             specA: {0: { 
                          width: 1.01, 
                          height: 2.0
                        }, 
                     1: { width: 2.50 } 
                     2: { depth: 3.00 }
                    }, 
             specB: {1, 5, 10}, 
             specC: {3, 4, 5, 6} } 
             } 
        }
}

我尝试使用聚合物建议的深层路径观察技术,使用路径通配符(*):

observers: [ '_specsChanged(proj.specs.*)' ]

然而,这种方法似乎只关注比规格低一级的变化。如何通过单个观察者声明来观察任何低于规格的变化?

1 个答案:

答案 0 :(得分:1)

你能发布一个显示问题的例子吗? Here's an example where path observation works.您的观察者阵列很好:

observers: ['_specsChanged(proj.specs.*)'],

深层路径观察应该适用于任何级别,但仅当属性通过数据绑定或诸如setarray functions之类的Polymer方法进行更改时才会起作用。