使用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 事件后在文本框中按 enter 删除虚拟键盘
为啥 JQuery keydown 适用于窗口而不适用于文本框?