因此,如果我将两个简单的变量与聚合物中的双向数据绑定绑定,它们会自动更新。
但我注意到地图和列表的行为有所不同。更改Map或List中的Element不会更新绑定变量,只能使用= Operator或notifyPropertyChange触发更新。
我的问题是我有两个元素E1和E2。 E1是E2的父母。
// E1.dart
class E1 extends PolymerElement {
@observable List<Map> data;
dataChanged() => print(data.toString());
}
//E1.html
<...>
<template repeat="{{map in data}}">
<E2 value="{{map[identifier]}}"></E2>
</template>
</...>
因此,如果E2内部的值发生变化并且我手动打印数据,则该值也会发生变化。但是dataChanged()函数永远不会被调用。当内部值发生变化时,我想在数据上调用notifyPropertyChange(#data,x,y)。有没有办法获得列表内部变更的通知?
我的列表如下所示:
[
{ identifier : {x1 : y1}},
{ identifier : {x2 : y2}},
{ identifier : {x3 : y3}},
{ identifier : {x4 : y4}}
]
我想要通知的更改是x和y,以及是否添加了新元素。标识符总是相同的。
答案 0 :(得分:1)
您可以使用ObservableList或ObservableMap代替常规List或Map。您还可以通过在调用toObservable时包装现有List或Map来自动创建它们。例如:
@observable ObservableList<Map> data = toObservable([1, 2, 3]);
这些类型/功能由聚合物导出,因此您不需要添加任何导入。