2015-10-20 69 views
2

我有一個屬性觀察更改項的屬性列表中的聚合物1

@property final List<Item> items = [ 
    new Item('red', false), 
    new Item('green', true), 
    new Item('blue', false) 
    ]; 

其中類Item看起來像

class Item extends JsProxy { 
    @reflectable String color; 
    @reflectable bool checked; 
    Item(this.color, this.checked); 
} 

的HTML看起來像

<template is="dom-repeat" items="{{items}}"> 
    <label><span>{{item.color}}</span> 
     <input type="checkbox" 
      value="{{item.color}}" 
      checked="{{item.checked::change}}"> 
    </label> 
    </template> 

我想在checked任何項目發生變化時收到通知。

回答

1

觀察者可以使用@Observe('some.path')註釋進行設置。 如果路徑包含.*,則使用包含更改實際路徑的更改記錄調用處理程序。

@Observe('items.*') 
    void updateSelectedColors(Map record, [_]) { 
    String path = record['path']; 
    if (path == 'items' || path.endsWith('.checked')) { 
     // do something 
    } 
    } 
} 

path == 'items'適用於items屬性與默認值的初始化。 path.endsWidth('.checked')確保代碼(// do something)僅在實際上checked屬性發生更改時才執行。所有其他更改都將被忽略。