1

我有一个组件,我想根据一个布尔值绑定一个不同的 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' 不起作用,但如果它这样做会很好。

4

1 回答 1

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

于 2013-09-09T10:59:42.993 回答