我正在使用Knockout过滤两个下拉菜单,但我不知道为什么我会看到此控制台错误。
未捕获的TypeError:无法处理绑定“值:function(){return $ root.filter}” 消息:无法读取未定义的属性“长度”
问题与返回值有关,它可以正确过滤数据;但是,控制台错误不断出现,我尝试更改以下内容:
$root
更改为$data
filter.Value
更改为filter.ID()
JS /淘汰赛:
var self = this;
self.filters = ko.observableArray(self.Model.Teams());
self.filter = ko.observable('');
self.items = ko.observableArray(self.Model.Users());
self.filteredItems = ko.computed(function () {
var filter = self.filter();
if (!filter || filter == "All") {
return self.items();
} else {
return ko.utils.arrayFilter(self.items(), function (i) {
return i.ID() == filter.Value();
});
}
});
此选择下拉列表:
<div>
<select class="filter-dropdown-small" data-bind="options: $root.filters, value: $root.filter, optionsText: 'Text', optionsCaption: 'All'"></select>
</div>
过滤这一个:
<div>
```<select class="filter-dropdown-small" data-bind="options: $root.filteredItems, optionsText: 'Text', optionsCaption: 'All'"></select>```
</div>
要过滤的数据,没有控制台错误。
答案 0 :(得分:0)
由于$ root.filter在注入此HTML的另一个部分中使用,这是导致控制台错误的冲突,重命名了JS的filter部分,因此数据绑定在第一段html上,这解决了控制台错误,因此是问题。