Knockout.js 敲除无法使用映射筛选可观察对象

Knockout.js 敲除无法使用映射筛选可观察对象,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我从和大量借用,但无法根据用户输入筛选我的表。我正在尝试允许用户按描述名称筛选列表。看起来过滤“函数”从未被调用过,但我不知道为什么 我尝试过使用映射插件和不使用映射插件,并且我尝试过在标记上使用模板(而不仅仅是在tbody标记上使用foreach),以防需要模板。每次我都可以通过敲除将我的viewModel的所有值绑定到HTML表,但是在filter文本框中键入什么也做不了 ,欢迎提出任何建议。谢谢 <input data-bind="value: filter, valueUpdate

我从和大量借用,但无法根据用户输入筛选我的表。我正在尝试允许用户按描述名称筛选列表。看起来过滤“函数”从未被调用过,但我不知道为什么

我尝试过使用映射插件和不使用映射插件,并且我尝试过在标记上使用模板(而不仅仅是在tbody标记上使用foreach),以防需要模板。每次我都可以通过敲除将我的viewModel的所有值绑定到HTML表,但是在filter文本框中键入什么也做不了

,欢迎提出任何建议。谢谢

<input data-bind="value: filter, valueUpdate: 'afterkeydown'" />


var jsonData = '[{"supplier":"HD Supply","itemNumber":"117983","description":"PAPER 
TOWEL DISPENSER","quantity":"1","price":"65.79"},
{"supplier":"Fun Express","itemNumber":"62_9115","description":"Learning 
Charts","quantity":"1","price":"5.80"},
{"supplier":"Royal Coffee","itemNumber":"4303","description":"Caffe Siena Coffee Clutch 
1300/cs","quantity":"1","price":"67.14"}]';

var viewModel = {
    cartItemsList : ko.mapping.fromJSON(jsonData),
    filter : ko.observable("")
};

viewModel.filteredItems = ko.dependentObservable(function () {
    var filter = this.filter().toLowerCase();
    if (!filter) {
        return this.cartItemsList();
    } else {
        return ko.utils.arrayFilter(this.cartItemsList(), function (cartItemsList) {
            return (cartItemsList.description().toLowerCase().indexOf(filter) > -1);
        });
    }
}, viewModel);

ko.applyBindings(viewModel, document.getElementById("tblShoppingCart"));

var jsonData='[{“供应商”:“HD供应”,“项目编号”:“117983”,“说明”:“文件”
毛巾分配器,“数量”:“1”,“价格”:“65.79”},
{“供应商”:“趣味快车”,“项目编号”:“629115”,“说明”:“学习”
图表,“数量”:“1”,“价格”:“5.80”},
{“供应商”:“皇家咖啡”,“项目编号”:“4303”,“描述”:“锡耶纳咖啡馆”
1300件/件,“数量:”“1”,“价格:”“67.14”}];
var viewModel={
cartItemsList:ko.mapping.fromJSON(jsonData),
过滤器:ko.可观察(“”)
};
viewModel.filteredItems=ko.dependenttobservable(函数(){
var filter=this.filter().toLowerCase();
如果(!过滤器){
返回此.cartItemsList();
}否则{
返回ko.utils.arrayFilter(this.cartItemsList(),函数(cartItemsList){
返回(cartItemsList.description().toLowerCase().indexOf(filter)>-1);
});
}
},视图模型);
applyBindings(viewModel,document.getElementById(“tblShoppingCart”);

在您的小提琴中,您仅将绑定应用于您的桌子!因此,您的过滤器输入未绑定!将
id=“tblShoppingCart”
移动到根div,它就会工作:nemesv-谢谢,我真的永远也想不到!如果您创建了一个答案,我会将其标记为已解决。