Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:未定义不是敲除中的函数_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 未捕获类型错误:未定义不是敲除中的函数

Javascript 未捕获类型错误:未定义不是敲除中的函数,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我试图在以下代码的帮助下,在通过对每个绑定进行敲除生成的html表中实现过滤器功能 self.filteredStep1Records = ko.computed(function() { return ko.utils.arrayFilter(self.step1BundleData(), function(bundle) { self.pageNumber(0); return (self.searchT

我试图在以下代码的帮助下,在通过对每个绑定进行敲除生成的html表中实现过滤器功能

self.filteredStep1Records = ko.computed(function() {
            return ko.utils.arrayFilter(self.step1BundleData(), function(bundle) {
                self.pageNumber(0);
                return (self.searchText().length == 0 || bundle.id.toLowerCase().indexOf(self.searchText().toLowerCase()) !== -1 || bundle.name.toLowerCase().indexOf(self.searchText().toLowerCase()) !== -1);
            });
        });
我得到的错误是 未捕获的TypeError:未定义不是下一行的函数:

return (self.searchText().length == 0 || bundle.id.toLowerCase().indexOf(self.searchText().toLowerCase()) !== -1 || bundle.name.toLowerCase().indexOf(self.searchText().toLowerCase()) !== -1);
代码的其余部分包括:

this.searchText = ko.observable('');
this.step1BundleData = ko.observableArray();
function bundle(id,name){
            this.id = ko.observable(id);
            this.name = ko.observable(name);
            this.selected = ko.observable(false);
        }
以下Ajax请求用于创建捆绑包:

getdata(8).done(function(data){
            data = $.parseJSON(data);
            $.each(data,function(index,value){
                self.step1BundleData.push(new bundle(value.id,value.name));
            });
        });
我不确定我哪里出了问题。

被定义为ko。可观测的

…用于检索值的每个新绑定的id和名称

... || bundle.id().toLowerCase().indexOf(...
//              ^^
与调用self.searchText检索其值的方式类似:

return (self.searchText().length == 0 || ...
//                     ^^
函数本身不会有toLowerCase方法


你能为这些片段提供更多的上下文吗?self.searchText是如何定义的?能否从self.step1BundleData中提供捆绑包的示例数据?bundle.id和bundle.name总是字符串吗?@Jonathan我编辑了这个问题,并提供了更多细节。
return (self.searchText().length == 0 || ...
//                     ^^
console.log(typeof bundle.name);               // 'function'
console.log(typeof bundle.name.toLowerCase);   // 'undefined'

console.log(typeof bundle.name());             // 'string'
console.log(typeof bundle.name().toLowerCase); // 'function'
return (self.searchText().length == 0 || bundle.id().toLowerCase().indexOf(self.searchText().toLowerCase()) !== -1 || bundle.name().toLowerCase().indexOf(self.searchText().toLowerCase()) !== -1);