聚合物:复杂的观察者观察阵列突变

聚合物:复杂的观察者观察阵列突变

问题描述:

我希望有一个复杂的观察者是观察和修改数组的属性:聚合物:复杂的观察者观察阵列突变

properties: { 
    list: { 
    type: Array, 
    value: ["foo"], 
    }, 
    prop: { 
    type: Number, 
    value: 10, 
    } 
}, 

observers: [ 
    'onChange(prop, list.splices)', 
], 

onChange: function() { 
    console.log('something changed!'); 
}, 

这只能在原始列表中有新的变化后,但之后不会被触发这两个属性都被初始化,也不会在原始列表中的任何更改之前更改prop

奇怪的是,如果我把两个观察者,一个用于prop,另一个用于list.splices,它们按预期工作,在初始化时触发。 (编辑:此行为有an issue

什么是在同一时间观察对数组突变和属性的更改的正确方法?

我目前的解决方法是有两名观察员调用相同的功能:

observers: [ 
    'onChange(prop, list.splices)', 
    'onChange(prop, list)', 
], 

试试这个

observers: [ 
    'onChange(prop, list.*)', 
], 
+0

尼斯。我觉得如果列表太大或项目太复杂,使用通配符会影响性能。但是我找不到任何支持这种信息的信息,你知道吗? – pomber

+0

根据'聚合物'的文档'通配符'用于观察变化'突变'和'子属性'。因此,与“拼接”相比,它应该对性能产生影响,但不清楚它会根据列表大小产生多大的影响。 – a1626