2013-09-08 3 views
1

У меня есть компонент, который я хочу связать с другим классом css, основанным на логическом значении. У меня есть следующие в моем компоненте кода:Как создать наблюдаемое производное свойство в Dart/Polymer Dart?

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' не работает, хотя было бы неплохо, если бы это произошло.

ответ

2

вы можете проверить пример наблюдаемого_getter из dart-polymer-dart-examples github repo.

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

Смежные вопросы