【问题标题】:KnockoutJs - How to throttle the binding afterkeydownKnockoutJs - 如何限制绑定 afterkeydown
【发布时间】:2014-09-01 12:31:17
【问题描述】:

我的过滤功能是这样工作的。

<input data-bind="value: filterByName, valueUpdate:'afterkeydown'" />
 <div data-bind="foreach: filteredRecords"/>
</body>

现在我只需要throttle 绑定filteredRecords 或对其进行延迟

我的视图模型是这样的

 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 上节流?

还有其他想法吗?

【问题讨论】:

  • 如果我明白你在追求什么,那么你可能想要限制filterByName。这将阻止 filteredRecords 收到通知,直到 filterByName 停止更改 x 毫秒。
  • 是的!这就是我需要做的!如果您将其作为答案提供,请记下它。

标签: javascript jquery html mvvm knockout.js


【解决方案1】:

如果我了解您的目标,那么您可能想要限制 filterByName。这将阻止filteredRecords 收到通知,直到filterByName 停止更改 x 毫秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多