我需要在此处使用表格中的过滤器
<p>Filter: <input data-bind="value: filter, valueUpdate: 'afterkeydown'" /></p>
这是过滤器框。
<table class="tbl" data-bind="visible: current">
<thead>
<tr data-bind="click:Table">
<th width="25%" data-column="Name">Name</th>
</tr>
</thead>
<tbody data-bind="foreach: Page">
<tr>
<td>
<span data-bind='text: Name'>name</span>
</td>
</tr>
</tbody>
这是将数据库中的名称绑定的表
var ModelsViewModel = function () {
var self = this;
self.Name = ko.observable("");
self.filter = ko.observable("");
self.List = ko.observableArray();
//---filter starts
ModelsViewModel.filteredItems = ko.dependentObservable(function () {
var filter = self.filter().toLowerCase();
if (!filter) {
return self.List;
} else {
return ko.utils.arrayFilter(self.List(), function (ManageList) {
return ko.utils.stringStartsWith(List.Name.toLowerCase(), self.filter);
});
}
}, ModelsViewModel);
//-----------ends
}
我们输入
时显示错误 TypeError: ko.utils.stringStartsWith is not a function
return ko.utils.stringStartsWith(List.Name.toLowerCase(), self.filt...
答案 0 :(得分:10)
ko.utils.stringStartsWith
。
另见github问题:ko.utils.stringStartsWith missing in release file #401
您可以创建和使用自己的startsWith方法(sampl代码取自链接的github问题):
var stringStartsWith = function (string, startsWith) {
string = string || "";
if (startsWith.length > string.length)
return false;
return string.substring(0, startsWith.length) === startsWith;
};
你的方法就是这样:
return ko.utils.arrayFilter(self.List(), function (ManageList) {
return stringStartsWith(List.Name.toLowerCase(), self.filter);
});