に表示したいアイテムの長いリストがあります<ul>
。「フィルター」入力を追加したいので、ユーザーはアイテムのリストをフィルターに一致するものに絞り込むことができます。
私のコントローラーにはfilter
小道具とlist
配列が含まれています:
function Ctrl() {
this.filter = m.prop('');
this.list = [];
}
update
コントローラーにメソッドを追加しました。このメソッドは、filter
小道具を見て、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
2 つのイベントを配置する必要がありますか? 更新するfilter
ものと起動するものupdate
?
単一のイベントを使用して、関数内のプロパティoninput
を更新する必要がありますか?filter
update
他に何か?