使用knockoutjs在文本框“keydown”之后过滤的显示列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用knockoutjs在文本框“keydown”之后过滤的显示列表相关的知识,希望对你有一定的参考价值。

我一直在学习淘汰赛约2个月,所以这可能是一个愚蠢的问题。我一直在尝试创建一个将通过文本输入过滤的列表。此过滤器还将同时隐藏/显示地图上的标记。我真的不知道我的问题是在淘汰赛方面还是html绑定方面。你能请我指出正确的方向吗?这是带有问题的代码的示例代码:

self.filteredPlaces = ko.computed(function() {
      var filter = self.query().toLowerCase();
      if (!filter) {
        ko.utils.arrayForEach(self.markers(), function (item) {
          item.setVisible(true);
          //I used the console.log to verify that the info was being fetch
          console.log(item.city);
        });
        return self.markers();
      } else {
        return ko.utils.arrayFilter(self.markers(), function(item) {
          // set all markers visible (false)
          var result = (item.city().toLowerCase().search(filter) >= 0);
          item.setVisible(result);
          return result;
        });
      }
    });

我还有一个链接到小提琴设置here

答案

您需要在ko.applyBindings(viewModel)中调用initMap以将敲除对象绑定到您的视图。来自the documentation

要激活Knockout,请将以下行添加到<script>块:ko.applyBindings(myViewModel);

此外,您需要subscribe到您的查询observable,以便您可以在查询更改时采取操作。

对于高级用户,如果要注册自己的订阅以通知可观察对象的更改,则可以调用其订阅功能。例如:

myViewModel.personName.subscribe(function(newValue) {
    alert("The person's new name is " + newValue);
});

以上是关于使用knockoutjs在文本框“keydown”之后过滤的显示列表的主要内容,如果未能解决你的问题,请参考以下文章

在捕获keydown事件时如何在文本框中允许退格

如何在 keydown 事件后在文本框中按 enter 删除虚拟键盘

为啥 JQuery keydown 适用于窗口而不适用于文本框?

在 JS/jQuery 中触发 keypress/keydown/keyup 事件?

扫码枪原理及案例

表单事件(jQuery)