Javascript 结合到使用聚合物的方法上
使用聚合物时,是否可以绑定到方法而不是值?例如Javascript 结合到使用聚合物的方法上,javascript,html,model-view-controller,polymer,Javascript,Html,Model View Controller,Polymer,使用聚合物时,是否可以绑定到方法而不是值?例如 <div>{{someMethod()}}</div> {{someMethod()} 或 {{someMethod} 从来源和文档来看,不是。只是想确认一下。不是直接的,但是有几种方法可以实现你想要的。我假设你想转换数据 将属性定义为ES5 getter 有点欺骗,但是您可以将属性定义为getter,然后围绕返回的值包装自定义逻辑 <div>{{likes}}</div> Polymer('
<div>{{someMethod()}}</div>
{{someMethod()}
或
{{someMethod}
从来源和文档来看,不是。只是想确认一下。不是直接的,但是有几种方法可以实现你想要的。我假设你想转换数据
<div>{{likes}}</div>
Polymer('my-tag', {
firstName: 'John',
get likes() {
return this.firstName + ' ' + lastName + ' likes bread';
}
});
演示:已更改
见下文顺便说一句,我们在Polymer中没有类似
{{someMethod()}}
的东西的一个原因是它执行JavaScript。通常认为执行类似于onclick=“someMethod()”
的操作是一种反模式,因为它很容易让自己受到诸如XSS攻击之类的攻击。绑定到getter不是一个好主意Object.observe
在没有额外代码的情况下无法观察getter,因此在切换到具有本机观察功能的平台时会出现问题。聚合物的观察和结合系统通常可以做你想做的事情,而不必使用吸气剂或设置剂。例如,可以使用firstnameChanged
()代替getter。如果您不希望likes
属性存在,则筛选解决方案是最佳选择。将此问题发布到错误的SO帐户下。无论如何,谢谢你提供的信息。如果我希望绑定值注入html而不是文本,那么定制过滤器也是我的最佳选择吗?看起来情况并非如此,原始绑定可能不适用于html注入。如果要注入html,可以在阴影根中引用一个节点,并在已更改的处理程序中设置.innerHTML
<代码>
和此。$.mycontainer.innerHTML='bold text!'代码>
<div>{{likes}}</div>
Polymer('my-tag', {
firstName: 'John',
get likes() {
return this.firstName + ' ' + lastName + ' likes bread';
}
});
<div>{{'thingy' | upperCaseFilter}}</div>
Polymer('my-tag', {
upperCaseFilter: function(value) {
return value.toUpperCase();
}
});