gpt4 book ai didi

dart - 如何订阅可观察领域的变更

转载 作者:行者123 更新时间:2023-12-04 13:40:11 25 4
gpt4 key购买 nike

直到最近我可以像下面所示或在this question中使用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; }
}

关于dart - 如何订阅可观察领域的变更,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19184079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com