2016-10-01 120 views
0

我希望有一個複雜的觀察者是觀察和修改數組的屬性:聚合物:複雜的觀察者觀察陣列突變

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

什麼是在同一時間觀察對數組突變和屬性的更改的正確方法?

回答

0

我目前的解決方法是有兩名觀察員調用相同的功能:

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

試試這個

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

尼斯。我覺得如果列表太大或項目太複雜,使用通配符會影響性能。但是我找不到任何支持這種信息的信息,你知道嗎? – pomber

+0

根據'聚合物'的文檔'通配符'用於觀察變化'突變'和'子屬性'。因此,與「拼接」相比,它應該對性能產生影響,但不清楚它會根據列表大小產生多大的影響。 – a1626