如何通过多个视图使用数据绑定

时间:2014-09-14 15:18:19

标签: dart dart-polymer

有人可以告诉我一些信息 @observable @publishedtoObservable

结合使用

想象一下,我的.dart文件有一个

@observable List array = toObservable([]);

该数组将传递给另一个polyview。

我应该写

@published List array;

@published List array = toObservable([]);

我是否必须对已经初始化为toObservable的已发布值重复toObservable ...

喜欢拥有3到4级的复杂对象

  migrationview            observable migration 
   - actionsview           published actions -> migration.actions
    -createTableview       published createTable -> actions.createTables
     -tableview            published table -> createTables.table
      -columnview          published columns -> table.columns

我想确保列视图中所做的更改 例如,向列添加列表 将被可观察的迁移对象识别..

做某事的正确方法......特别是在使用课程时

我应该只将地图和列表指定为toObservable() 怎么样的

Migration migration = toObservable(new Migration()); // ???????

我已将迁移内的列表和地图定义为@observable

1 个答案:

答案 0 :(得分:2)

只需在列表或地图上拨打toObservable([])一次就足够了,即使您传递它也是如此。

将可观察集合分配给字段并在绑定表达式中使用此字段时,您还需要使该字段可观察(与@published注释一样。) 使列表本身可观察只是为了向Polymer通知列表中的添加/删除,但Polymer还需要知道有一些新的分配需要在视图中反映出来。

如果您要在Polymer绑定表达式中使用自定义模型类,请使用Observable mixin并添加@observable注释。 有关详细信息,请参阅Implement an Observer pattern in Dart

extends PolymerElement已包含Observable mixin @published隐含@observable

如果您创建一个新列表,您当然需要使其可观察以获取更改通知。

@published List array = toObservable([1,2,3,4]);

如果您始终创建新列表但从不更改现有列表,则根本不需要toObservable([])