我有一长串想要在<ul>
. 我想添加一个“过滤器”输入,以便用户可以将项目列表缩小到与过滤器匹配的项目。
我的控制器包含一个filter
道具和一个list
数组:
function Ctrl() {
this.filter = m.prop('');
this.list = [];
}
我update
在控制器中添加了一个方法,它查看filter
prop 并更新list
数组的内容:
Ctrl.prototype.update = function (value) {
var _this = this;
if (this.filter()) {
searchItems(this.filter(), function (items) {
_this.list = items;
});
} else {
this.list = [];
}
};
最后,我的视图遍历list
数组并呈现项目。此外,它在顶部显示一个输入,绑定到filter
道具:
var view = function (ctrl) {
return m('#content', [
m('input', {
oninput: m.withAttr("value", ctrl.filter),
value: ctrl.filter()
}),
m('ul', [
ctrl.list.map(function (item, idx) {
return m('li', m('span', item.getName()));
})
])
]);
};
我的问题是,如何update
在值filter
更改时触发函数,以便获得更新的项目列表?
我需要定位两个oninput
事件吗?一个更新filter
一个开火update
?
Should I use a single oninput
event and update the filter
property within he update
function?
Anything else?