Javascript KnockoutJs-如何在按下键后限制绑定
我得到了我的过滤功能的工作Javascript KnockoutJs-如何在按下键后限制绑定,javascript,jquery,html,mvvm,knockout.js,Javascript,Jquery,Html,Mvvm,Knockout.js,我得到了我的过滤功能的工作 <input data-bind="value: filterByName, valueUpdate:'afterkeydown'" /> <div data-bind="foreach: filteredRecords"/> </body> 现在我的问题是把.extend({throttle:500})放在哪里 我想我不能把它放在filteredRecords上,因为它也会限制页面加载 还有其他想法吗?如果我明白你的意思,那么
<input data-bind="value: filterByName, valueUpdate:'afterkeydown'" />
<div data-bind="foreach: filteredRecords"/>
</body>
现在我的问题是把.extend({throttle:500})放在哪里代码>
我想我不能把它放在filteredRecords
上,因为它也会限制页面加载
还有其他想法吗?如果我明白你的意思,那么你可能想限制过滤器的语法名。这将防止filteredRecords
收到通知,直到filterByName
停止更改x毫秒 如果我了解您的目的,那么您可能想限制filterByName
。这将阻止filteredRecords
收到通知,直到filterByName
停止更改x毫秒。是的!这就是我需要做的!如果你提供答案,我会记下来。
self.filteredRecords= ko.computed(function () {
return getRecordByStatus(1);
});
self.filterByName= ko.observable("");
var getRecordByStatus = function (status) {
var periodRecord, filtered = [];
if (self.timesheetApprovalResponse().periods) {
// period filtering
if (self.selectedPeriod()) {
periodRecord = _.find(self.timesheetApprovalResponse().periods, function(p) {
return p.fromDate === self.selectedPeriod().key;
});
if (periodRecord) {
filtered = _.where(periodRecord.timesheets,
function(t) {
return t.status === status;
});
}
}
}
if (self.filterByName()) {
filtered = _.where(filtered,
function (t) {
console.log(t.name.toLowerCase() + "-" + self.filterByName().toLowerCase());
return t.name.toLowerCase().indexOf(self.filterByName().toLowerCase()) > -1;
});
}
return filtered;
};