我的工作是为了我的过滤功能。
<input data-bind="value: filterByName, valueUpdate:'afterkeydown'" />
<div data-bind="foreach: filteredRecords"/>
</body>
现在我只需要throttle
绑定filteredRecords
或者延迟它{/ p>
我的视图模型看起来像这样
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;
};
现在问题在于放置.extend({ throttle: 500 });
的问题
我想我不能把它放在filteredRecords
,因为它也会在Page Load
中扼要?
还有其他想法吗?
答案 0 :(得分:0)
如果我理解你的目标,那么你可能想要限制filterByName
。这将阻止filteredRecords
在filterByName
停止更改x毫秒之前收到通知。