直到最近我可以像下面所示或在此问题中那样使用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;
}
对于Polymer.dart 0.8或更高版本,您还可以使用以下便捷形式:
isLoggedInChanged(oldValue) {
doSomething();
}
注意,如何在PolymerElement内创建使用yourFieldName * Changed名称的方法
这里还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; }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句