如何在Dart / Polymer Dart中创建可观察的衍生资产?

时间:2013-09-08 02:37:13

标签: dart dart-webui polymer

我有一个组件,我想基于布尔值绑定不同的css类。我的组件代码中包含以下内容:

bindCssClass(div, "open", this, "task.isOpen");
bindCssClass(div, "closed", this, 'task.isClosed');

其中isOpen / isClosed定义如下:

@observable bool isOpen = true;
get isClosed => !isOpen;

问题是,我怎样才能获得isClosed是可观察的,但是基于isOpen的变化?我想知道这种情况,但也适用于更复杂的情况(例如,从多个组件派生的字符串)

此外,有没有更好的方法将bindCss用于这样一个简单的案例?绑定到'!task.isOpen'不起作用,但如果它确实会很好。

1 个答案:

答案 0 :(得分:2)

您可能需要查看dart-polymer-dart-examples github repo中的observable_getter示例。

class App extends Object with ObservableMixin {
  @observable
  DateTime timestamp;

  App() {
    bindProperty(this, const Symbol('timestamp'),
      () => notifyProperty(this, const Symbol('second')));
  }

  int get second => timestamp.second;
}


main() {
  App app = new App();
  new Timer.periodic(const Duration(seconds: 1), (_) {
    app.timestamp = new DateTime.now();
  });
  query('#tmpl').model = app;
}

同时查看讨论:https://code.google.com/p/dart/issues/detail?id=12473