6

最近まで、以下またはこの質問のように bindProperty を使用できましたが、それは 0.8.0 で変更され、古い動作を取得するためにコードを変更する方法がわかりません (doSomething() が呼び出されます):

<polymer-element name="my-login" attributes="model">
  <template>
    <template if="{{"model.isLoggedIn}}">
      ...
    </template>
  </template>
  <script type= ... ></script>
</polymer-element>

.

@CustomTag("my-login")
class MyLogin extends PolymerElement with ObservableMixin {
  LoginModel model;

  @override
  inserted() {

  void doSomething() {
   ...
  }

logoutChangeSubscription = bindProperty(model, #isLoggedIn, () => doSomething());

  }
}

class Model extends Object with ObservableMixin {
  @observable bool isLoggedIn = false;
}
4

3 に答える 3

6

Polymer.dart 0.8 以降では、次の便利なフォームも使用できます。

isLoggedInChanged(oldValue) {
  doSomething();
}

yourFieldName *Changedの名前を使用するメソッドを PolymerElement 内に作成する方法に注目してください。

onPropertyChangeここで定義されているものもあります: http://api.dartlang.org/docs/bleeding_edge/observe.html#onPropertyChange

ドキュメントから:

class MyModel extends ObservableBase {
  StreamSubscription _sub;
  MyOtherModel _otherModel;

  MyModel() {
    ...
    _sub = onPropertyChange(_otherModel, const Symbol('value'),
        () => notifyProperty(this, const Symbol('prop'));
  }

  String get prop => _otherModel.value;
  set prop(String value) { _otherModel.value = value; }
}
于 2013-10-08T05:51:39.447 に答える