我有一个属性
@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
更改时收到通知。
答案 0 :(得分: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
属性发生更改时执行。所有其他更改都将被忽略。