【发布时间】:2017-12-19 09:21:44
【问题描述】:
我想在智能和哑组件(逻辑和表示组件)上重构我的代码,我想知道是否可以在输入中传递函数并从主机组件触发它(例如在 Angular 中)。
【问题讨论】:
标签: javascript data-binding polymer
我想在智能和哑组件(逻辑和表示组件)上重构我的代码,我想知道是否可以在输入中传递函数并从主机组件触发它(例如在 Angular 中)。
【问题讨论】:
标签: javascript data-binding polymer
这是可能的。我采用这种方法来拥有一个模型数据组件和一个带有切换的单独过滤组件,该组件将通过如下属性将函数传递给模型组件:
<my-model id="modelData" items="{{items}}" filters="{{filters}}"></my-model>
<my-filter id="listFilter" active-filter="{{filters}}"></my-filter>
在<my-filter>内:
static get properties() {
return {
activeFilter: {
type: Object,
notify: true
}
}
}
apply() {
this.activeFilter = this._compute(this.$.myToggle.value)
}
_compute(toggle) {
return function(item) {
return item.condition == toggle
}
}
在<my-model>内:
_filterModel(model, filters) {
for (let item of model) {
if (filters(item)) {
this.push('filteredList', item)
}
}
}
虽然我这样做只是为了证明概念,但通常我只是传递要修改的对象。
【讨论】: