【问题标题】:Polymer 1.0 DEEP path observation (multiple levels)Polymer 1.0 DEEP 路径观察(多级)
【发布时间】:2016-02-23 15:48:12
【问题描述】:

我有一个问题,我需要观察 JSON 对象的深度变化。例如,该对象可能类似于如下所示的 proj 对象。 specs 子属性是可引用的(应该​​始终存在)。但是,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.*)' ]

但是,这种方法似乎只关注低于规范一级的更改。如何使用单个观察者声明观察低于规范的任何级别的更改?

【问题讨论】:

    标签: polymer polymer-1.0 observers


    【解决方案1】:

    您能否发布一个示例来说明您的问题? Here's an example where path observation works.你的观察者数组很好:

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

    深度路径观察应该在任何级别都有效,但前提是属性通过数据绑定或 Polymer 方法(如 setarray functions)发生变化。

    【讨论】:

    • 我确实在 proj.specs 上使用了 Polymer 的 set 方法。如果我这样做:this.set('proj.specs', detail.newSpecs); ,它实际上将值进一步向下更改两个级别(即上面示例中的宽度或深度值),或者在更深的级别中添加子属性,路径观察器不会触发。应该吗?
    猜你喜欢
    • 2015-12-30
    • 2016-06-10
    • 1970-01-01
    • 2015-11-19
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2016-05-23
    相关资源
    最近更新 更多