[Dart+Polymer] Polymer1.0対応に伴いBraking Change! マジか??

Dartが1.12になるのに伴い、Polymerが1.0に切り替わったらしく、サンプルを見てみた。

どんだけ変えるのかと。
今までの全く無駄じゃん!

Polymer Dart 1.0 Developer Guide
https://github.com/dart-lang/polymer-dart/wiki#10-developer-guide

@observableが@propertyに変更

さらに、2way-bindingするには、
@Property(notify: true)
と宣言しなくてはいけない。("P"が大文字なのに注意)

プロパティへの値のセットに専用メソッドを使用する

@observable String hoge;
...
void updateHoge() => hoge = "gg";


これが下のように変わります。

@property
String hoge;
...
void updateHoge() => set("hoge","gg");


じゃないと、HTML側が更新されないです。

イベントの取り方が変わった

イベントの取り方はいくつかあるようです。

方法1:@Listenアノテーション

HTML側はidだけ設定します。Dart側でどのIDのどのイベントを受けるかをメソッド単位で設定します。

<button id="hoge">発射</button>

@Listen("hoge.click")
void fire(e,[_]) => print("hoge");


方法2:onにListenする案外ベタな方法

attached() {
  $["hoge"].on["click"].listen( (e)=>print("hoge") );
}

プロパティの変更イベントで受ける

以前はプロパティ名に"Changed"を付けた名前のメソッドが自動的に呼ばれたものが、@Listenアノテーションに統一されています。

@Property(notify:true)
String hoge;

@Listen("hoge-changed")
void hogeKawatta(e,[_]) => print("Kitsune!");


このとき、プロパティは2Way-bindingにする必要があるらしいですよ。


っていうか、[_]って何?

コメント

このブログの人気の投稿

nginxでlocalhostとしてアクセスをサーバーに転送する方法

Android・・・テキスト描画あれこれ, ascent(), descent()等

Android:stateに応じて切り替わるdrawable・・・StateListDrawable