Dart Polymer 1.0 - 双向绑定有效吗?

时间:2015-10-16 12:23:55

标签: dart dart-polymer

双向绑定适用于Dart Polymer 1.0 - RC2?

当我在.dart中更改字段@Property(nofity:true)时,它不会在.html中反映(更改)到{{}}。

请参阅以下示例。

我单击纸张按钮,它是 clicar ,属性文本已更改,但 {{text}} 不会改变!

main_app.html

<dom-module id="main-app">
  <style>
    :host {
      display: block;
    }
  </style>

  <template>
    <paper-input label="Type something..." value="{{text}}"></paper-input>
    <p>
      Text: <span>{{text}}</span><br />
    </p>
    <paper-button on-click="clicar">cliqueme</paper-button>
    </p>
  </template>
</dom-module>

main_app.dart

@HtmlImport('main_app.html')
library untitled8.lib.main_app;

import 'dart:html';

import 'package:polymer_elements/paper_button.dart';
import 'package:polymer_elements/paper_input.dart';
import 'package:polymer/polymer.dart';
import 'package:web_components/web_components.dart';

@PolymerRegister('main-app')
class MainApp extends PolymerElement {
  @Property(notify: true)
  String text;

  MainApp.created() : super.created();

  @reflectable
  void clicar(e, detail) {
    text = "super teste";
  }
}

1 个答案:

答案 0 :(得分:3)

您需要使用提供的方法更新属性,例如

 set('text', "super teste");

notify: true仅用于通知父元素(触发test-changed事件)

PolymerBase mixin中有很多这样的方法,您可以通过扩展PolymerElement自动添加这些方法,并通知Polymer有关更改。

  • notifyPath(目前与set相同)

对于集合有

  • add
  • addAll
  • clear
  • fillRange
  • insert
  • insertAll
  • removeItem
  • removeAt
  • removeLast
  • removeRange
  • removeWhere
  • replaceRange
  • retainWhere
  • setAll
  • setRange

还有一个

  • get

不确定使用它的原因。