カスタム要素内に PolymerExpression フィルターを登録するにはどうすればよいですか? Polymer.dart を使用しています。
私はこれを使いたい:
<div>Uppercase: {{bob.fullName | uppercase}}</div>
カスタム要素のテンプレート内。どこで登録しuppercase
ますか?
カスタム要素内に PolymerExpression フィルターを登録するにはどうすればよいですか? Polymer.dart を使用しています。
私はこれを使いたい:
<div>Uppercase: {{bob.fullName | uppercase}}</div>
カスタム要素のテンプレート内。どこで登録しuppercase
ますか?
Seth answer を試してみましたが、式自体は機能していますが、どういうわけかコンポーネントのイベントが失われています。以下on-click
を使用していたときに、イベントが機能しなくなりました。
DocumentFragment instanceTemplate(Element template) =>
template.createInstance(this,
new PolymerExpressions(globals: {
'uppercase': (String input) => input.toUpperCase()
}));
ポリマー式のページで提案されている解決策も試しましたが、バインディング デリゲートが明らかに欠落しています。新しいバージョンのせいでしょうか。
とにかく、コードを調べた後、式を持ち、イベントを機能させ続ける別の方法を見つけました。
class MyElement extends PolymerElement {
MainElement.created() : super.created();
@override
BindingDelegate syntax = new MyPolymerExpressions();
}
class MyPolymerExpressions extends PolymerExpressions {
MyPolymerExpressions(): super(globals: {
'uppercase': (String input) => input.toUpperCase()
});
@override
prepareBinding(String path, name, node) => Polymer.prepareBinding(path, name, node, super.prepareBinding);
}
prepareBinding
メソッドがオーバーライドされているイベントが機能していることに気付きました。
誰かがそれを行うためのより良い方法やこれについての考えを持っているなら、私は非常に興味があります!
dart-misc に関する議論から、ポリマー式は単一の引数を受け入れる戻り値を探しています。toFixed
したがって、パラメーターの例を再現するには、フィルターから関数を返す必要があります。
class MyElement extends PolymerElement {
MainElement.created() : super.created();
String toFixed(int digits) => (num n) => n.toStringAsFixed(digits);
}
また、polymer_expressions
パッケージから、式フィルターを使用するためにカスタム バインディング/デリゲートを実行する必要がなくなりました: "Polymer Expressions are now the default syntax for custom elements." 関数ディレクトリを要素に追加して、それをフィルターとして使用できるようです。