如何通过Knockout JS获取输入框绑定值并打印用户输入内容?
解决Knockout JS获取输入框值的问题
嘿,刚接触Knockout很容易踩这个小坑~你现在的问题是:self.filter是Knockout的可观察对象(observable),它本质是一个函数,直接打印它只会输出这个函数对象,而不是输入框里的实际值。
正确获取值的方法
要获取observable存储的当前值,你需要调用这个函数(不带任何参数),修改你的filterList方法就行:
var viewModel = function() { var self = this; self.filter = ko.observable(''); self.locationList = ko.observableArray(model); self.filterList = function(){ // 这里要加上()来获取实际输入值 console.log( self.filter() ); }; }
额外优化建议
因为你用了textInput: filter绑定,它已经会实时双向同步输入框内容和filter的值,其实还有更贴合Knockout响应式风格的写法:直接订阅filter的变化,不用依赖keyup事件,这样每次输入值变化时都会自动触发打印:
var viewModel = function() { var self = this; self.filter = ko.observable(''); self.locationList = ko.observableArray(model); // 订阅filter的变化,每次值更新时自动执行 self.filter.subscribe(function(newInputValue) { console.log("用户输入的内容:", newInputValue); }); }
这样你甚至可以去掉HTML里的event:{keyup: filterList}绑定,代码会更简洁哦~
内容的提问来源于stack exchange,提问作者meddy
相关产品推荐
相关产品推荐

