Dart 如何适应可观测场的变化
直到最近,我还可以使用bindProperty,如下图或中所示,但这在0.8.0中有所改变,我不知道如何更改代码以获得旧的行为(doSomething()被调用):Dart 如何适应可观测场的变化,dart,dart-polymer,Dart,Dart Polymer,直到最近,我还可以使用bindProperty,如下图或中所示,但这在0.8.0中有所改变,我不知道如何更改代码以获得旧的行为(doSomething()被调用): Polymer.dart>=1.0.0 @Property(observer: 'doSomething') bool isLoggedIn; @reflectable void doSomething(bool newValue, bool oldValue) => ... 或 Polymer.dartnotifyPr
Polymer.dart>=1.0.0
@Property(observer: 'doSomething') bool isLoggedIn;
@reflectable
void doSomething(bool newValue, bool oldValue) => ...
或
Polymer.dart<1.0.0
@Property(observer: 'doSomething') bool isLoggedIn;
@reflectable
void doSomething(bool newValue, bool oldValue) => ...
好的,找到了
new PathObserver(model, "isLoggedIn").changes.listen((e) => doSomething());
对于Polymer.dart 0.8或更高版本,您也可以使用此方便表单:
isLoggedInChanged(旧值){
doSomething();
}
请注意,如何在PolymRelation中创建一个使用yourFieldName*名称的方法
这里还定义了onPropertyChange
:
从文档中:
classmymodel扩展了observebase{
StreamSubscription;
肌热模型;
MyModel(){
...
_sub=onPropertyChange(_otherModel,常量符号('value'),
()=>notifyProperty(这个,常量符号('prop'));
}
字符串get prop=>\u otherModel.value;
设置属性(字符串值){u otherModel.value=value;}
}
语法似乎有点变化。
甘特提出的解决方案的语法现在似乎是:
newpathobserver(model,“isLoggedIn”).open((e)=>doSomething());