gpt4 book ai didi

dart - 是否可以在polymer.dart 中发布匹配的getter 和setter 属性?

转载 作者:行者123 更新时间:2023-12-03 02:57:50 26 4
gpt4 key购买 nike

我一直在玩 polymer.dart 教程中的秒表示例。我已更改 @Observable String counter = '00:00';到:

String _counter = '00:00';
@published void set counter (String s){ _counter = s; }
@published String get counter => _counter;

我将其设置为 @published所以我可以在 html 标签中设置 counter 属性,当我最初将其更改为 @Published String counter = '00:00'; 时效果很好但是将它拆分为单独的 getter 和 setter 属性,它根本不再起作用,是否可以做这样的事情?我希望在以编程方式或通过用户/html更改更改绑定(bind)值时执行一些自定义逻辑。

最佳答案

@observable仅在 setter/getter 上是必需的。

我想你想做的是

// additional functionality in the setter
String _counter = '00:00';
@PublishedProperty(reflect: true)
String get counter => _counter;
void set counter (String s){
_counter = s;
// do something ...
}

void attached() {
new async.Timer.periodic(new Duration(seconds:1), (_) {
var oldVal = _counter;
var time = new DateTime.now();
_counter = '${time.minute}:${time.second}';
// explicitely notify Polymer about the changed value
notifyPropertyChange(#counter, oldVal, _counter);
});
}

或者

// additional functionality in xxxChanged
@PublishedProperty(reflect: true)
String counter = '00:00';

void counterChanged(oldVal, newVal){
// do something ...
}

另一个是

// use readValue/writeValue to fix some timing issues
@PublishedProperty(reflect: true)
String get counter => readValue(#counter);
void set counter (String s){
writeValue(#counter, s);
// do something ...
}

//in the constructor
writeValue(#counter, '00:00');
@PublishedProperty(reflect: true)确保 HTML 属性使用字段值进行更新。

如果您发现这令人困惑,那么您并不孤单...

关于dart - 是否可以在polymer.dart 中发布匹配的getter 和setter 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591048/

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