如何在自定义元素内注册 PolymerExpression 过滤器?我正在使用 Polymer.dart。
我想用这个:
<div>Uppercase: {{bob.fullName | uppercase}}</div>
在我的自定义元素的模板内。我在哪里注册uppercase
?
我尝试了 Seth 答案,表达式本身正在工作,但不知何故我在组件上丢失了事件。
我的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
方法被重写。
如果有人有更好的方法或对此有一些想法,我很感兴趣!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)