Dart:@observable 的 setter/getter

标签 dart dart-polymer

我试图了解可观察的 setter/getter 在使用其他类实例属性时如何工作:

当我绑定(bind)隐式 getter/setter 对“名称”时,它会在输入和 div 中更新,并且一切都很好地同步。

然而,显式的 getter 'fullname' 并没有在 HTML 中更新。有没有办法让它工作(基本上元素绑定(bind)中的“全名”也应该更新)?也许我缺少一个二传手,但是二传手在这里又没有意义......

非常简单的示例来演示:

测试元素.html

<link rel="import" href="../../packages/polymer/polymer.html">
<polymer-element name="test-element">
  <template>
    <input value="{{ds.name}}">
    <div>{{ds.name}}</div>
    <div>{{ds.fullname}}</div>
  </template>
  <script type="application/dart" src="test1.dart"></script>
</polymer-element>

测试元素.dart

import 'package:polymer/polymer.dart';
import 'package:popoli/sysmaster-settings.dart';

@CustomTag('test-element')
class TestElement extends PolymerElement {
  @observable VerySimpleTest ds;

  TestElement.created() : super.created() {
    ds = new VerySimpleTest()..name = 'Peter';
  }
}

Dart

class VerySimpleTest extends Observable {
  @observable String name = '';
  @observable String get fullname => 'Test: $name';
  VerySimpleTest() : super();
}

最佳答案

你需要通知 Polymer 一个值已经改变了 getter 所依赖的。

String set name(String val) {
  name = notifyPropertyChange(#fullname, name, val);
}

或者这也应该有效

@ComputedProperty('Test: $name') String get fullname => 'Test: $name';

参见 http://japhr.blogspot.co.at/2014/08/the-polymerdart-computedproperty.html了解更多详情。

关于Dart:@observable 的 setter/getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345560/

相关文章:

dart - 你如何在 Dart 中创建自定义的霓虹动画

dart - 如何使 polymer 元素可拖动

dart - 未捕获的层次结构请求错误

oop - 带有工厂构造函数的抽象类的好处?

dart - PolymerDart 自定义元素与 Angular.dart 模型的双向绑定(bind)

flutter - 如何将渐变过滤器应用于图标?

dart - 1.0的聚合物 Dart 测试

Flutter 热重载不适用于 VSCode 中的自动保存

android - 我正在尝试使用 "Pdf creation library"在 flutter 应用程序中生成 pdf。在用其他语言生成 pdf 时会出现异常

asynchronous - 在 Flutter 应用程序中处理异步 wifi 检查