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

时间:2017-12-22 15:53:18

标签: google-maps knockout.js

我一直在学习淘汰赛约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

的链接

1 个答案:

答案 0 :(得分:0)

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

  

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

此外,您需要subscribe查询您的查询,以便在查询更改时执行操作。

  

对于高级用户,如果您想注册自己的订阅   如果被告知可观察的变化,您可以致电他们的订阅   功能。例如:

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