2015-10-01 63 views
2

使用PolymerTS擴展。我試着去觀察使用通配符符號到一個數組中的變化:在Polymer觀察數組元素的不工作的布爾綁定

this.set("tags.0.selected", true) 

但tagsChanged功能:

@component("ha-tags") 
class HaTags extends polymer.Base implements polymer.Element { 
    @property({ type: Array, notify: true }) 
    public tags: Array<HaTag> = []; 

    @observe("tags.*") 
    tagsChanged(changeRecord) { 
     alert(changeRecord); 
    } 

} 

HaTags.register(); 

這,只要我使用以下方法來對數組的元素設定值正常工作不叫,如果我通過結合改變值:

<template is="dom-repeat" items="[[tags]]"> 
    <paper-icon-item role="menuitemcheckbox"> 
    <paper-checkbox item-icon checked="{{item.selected}}"></paper-checkbox> 
    <div class="flex">[[item.plurName]]</div> 
    </paper-icon-item> 
</template> 

結果:選定的值改變細,當我蜱或取消選中的複選框,但是tagsChanged不叫。

回答

0

聚合物觀察員只適用於在作爲性質的聚合物元件聲明的屬性工作。它不適用於子屬性。 (聚合物1.0不遵守子屬性)

在你的榜樣,你有標籤列表。您可以觀察對「標籤」數組的任何更改(添加/刪除項目),因爲「標籤」是您元素的屬性。但是你不能「監視」標籤內部屬性的變化。 (這可以通過Object.Observe來實現,但Polymer 1.0不會將其用於性能/兼容性問題)。

爲了您的具體的例子,如果你需要做的事情,每當用戶檢查標籤,您可以將事件處理程序屬性添加到紙複選框。在事件處理程序,你可以使用模板方法itemForElement返回綁定的對象(在你的情況下,標記)。

如何使用一個簡單的例子itemForElement可以在這裏找到: http://jsbin.com/lofarabare/edit?html,output

+0

It's可能出現使用itemForElement一個小例子嗎? – Muka

+0

@Muka。您可以檢查此jsbin使用itemForElement的一個基本的例子:http://jsbin.com/lofarabare/edit?html,output –

+0

使用itemForElement方法描述解決我的問題,謝謝!這似乎是一種解決方法,但我認爲它現在是聚合物的最佳實踐。 – Syntax42

相關問題