如何在Polymer.dart中的自定义元件内注册PolymerExpression过滤器?

如何在Polymer.dart中的自定义元件内注册PolymerExpression过滤器?,dart,dart-polymer,Dart,Dart Polymer,如何在自定义元素中注册PolymerExpression过滤器?我用的是聚合物飞镖 我想用这个: <div>Uppercase: {{bob.fullName | uppercase}}</div> 大写:{{bob.fullName | Uppercase} 在我的自定义元素的模板中。我在哪里注册大写?在聚合相关中,覆盖实例模板: DocumentFragment instanceTemplate(元素模板)=> template.createInstance(此,

如何在自定义元素中注册PolymerExpression过滤器?我用的是聚合物飞镖

我想用这个:

<div>Uppercase: {{bob.fullName | uppercase}}</div>
大写:{{bob.fullName | Uppercase}

在我的自定义元素的模板中。我在哪里注册
大写

聚合相关
中,覆盖
实例模板

DocumentFragment instanceTemplate(元素模板)=>
template.createInstance(此,
新的PolymerExpressions(全局:{
“大写”:(字符串输入)=>input.toUpperCase()
}));

请注意,您必须创建
PolymerExpressions
的实例并注册过滤器。然后您必须调用
模板.createInstance

我尝试了Seth-answer,表达式本身正在工作,但不知何故,我丢失了组件上的事件。 当我使用以下工具时,我的点击
事件不再有效:

DocumentFragment instanceTemplate(元素模板)=>
template.createInstance(此,
新的PolymerExpressions(全局:{
“大写”:(字符串输入)=>input.toUpperCase()
}));
我还尝试了聚合物表达式页面上提出的解决方案,但绑定代理显然丢失了。也许是因为一个新版本

无论如何,在研究了代码之后,我找到了另一种方法来创建表达式并保持事件工作

MyElement类扩展了聚合关系{
mainlelement.created():super.created();
@凌驾
BindingDelegate语法=新建MyPolymerExpressions();
}
类MyPolymerExpressions扩展了PolymerExpressions{
MyPolymerExpressions():超级(全局:{
“大写”:(字符串输入)=>input.toUpperCase()
});
@凌驾
prepareBinding(字符串路径、名称、节点)=>Polymer.prepareBinding(路径、名称、节点、超级.prepareBinding);
}
我注意到事件正在工作,
prepareBinding
方法被覆盖

如果有人有更好的方法或者对此有什么想法,我很感兴趣

从a中,polymer表达式正在寻找接受单个参数的返回值。因此,要重现
toFixed
,您需要从过滤器返回一个函数:

MyElement类扩展了聚合关系{
mainlelement.created():super.created();
字符串toFixed(整数位数)=>(num n)=>n.toStringAsFixed(位数);
}

此外,从中,您不再需要执行自定义绑定/委托来使用表达式过滤器:“聚合表达式现在是自定义元素的默认语法。”您似乎可以将函数目录添加到元素中,并将其用作过滤器。

如果您对更简单的方法感兴趣,你可能想成为明星:另请看埃里克·泰克斯对这个问题的回答我不知道他实际上是这样做的。