Seth Ladd の Polymer.dart の例は素晴らしく、非常に役に立ちます。observable_listの例ではDateTime
、インスタンスをObservableList timestamps
. 拡張はDateTime
しませんが、 my_element.htmlObservable
を変更して上のフィールドにアクセスします
{{ts in timestamps}}
Dart VM での実行時に動作します。たとえば、
<li>{{ts}}</li>
に
<li>{{ts.second}}</li>
DateTime.seconds
Dart VM 上でフィールドにアクセスします。ただし、dart2js がアプリを JavaScript にコンパイルすると、Polymer 式のフィールドへのアクセスが壊れます。Uncaught Error: RangeError: value 0
この場合、例外がスローされます。より一般的NoSuchMethodError : method not found: 'Symbol(...)'
には、フィールド名がスローされます (こちらの例を参照) 。
クラスが拡張されている場合、フィールドへのObservable
アクセスは@observable
、Javascript にコンパイルした後、Polymer 式内で機能します (MyRow
この例でクラスを に変更しても、javascript では例外がスローされextends Observable
ません)。
のような外部クラスに注釈を追加できない場合はどうすればよいDateTime
ですか? これはただの dart2js 生成の現在のバグですか? それとも、Polymer.dart の仕様により、観測不可能なクラスからフィールドを読み取ることが禁止されますか? 以前は、dart-protobuf でweb_ui
生成されたクラスのフィールドに、javascript にコンパイルした後に正常にアクセスできたので、このユース ケースが Polymer.dart でもサポートされることを期待しています。