【发布时间】:2018-04-12 20:31:33
【问题描述】:
我有 100 多个结果,我希望能够在没有管道的情况下进行搜索。不使用管道的原因是它大大降低了性能。 问题是 .indexOf 返回未定义的读取属性“indexOf” 错误
理想情况下,我想在打字时显示结果(即双向绑定?)
<th class="header7"><input type="text" placeholder="search"
[(ngModel)]="filterString" (keyup)="applyfilter()"></th>
<div class="arrayOfGrade"
*ngFor="let key of arrayOfGradedCoins; let i = index">
this.arrayOfGradedCoins[i] =
{"_id":key._id, "item1": this.item1,"item2": this.item2}
applyfilter = () => {
var results =[];
for (var i = 0; i<this.arrayOfGradedCoins.length; i++) {
for (let key in this.arrayOfGradedCoins[i]) {
if (this.arrayOfGradedCoins[key].indexOf(this.filterString) != -1) {
results.push(this.arrayOfGradedCoins[i]);
}
}
}
this.arrayOfGradedCoins = results;
}
【问题讨论】:
-
您的
this.arrayOfGradedCoins[key]是一个对象,您正在调用indexOf(...)。您的意思是改用它的某个属性吗? -
啊好的我明白你在说什么,我试过没有 [key] 没有错误,但搜索时我的项目列表不显示。我喜欢专门搜索item1
-
如果您提供有关
this.arrayOfGradedCoins包含的内容以及您正在搜索的对象的具体内容的更多详细信息,我们可以为您提供有关如何更改applyFilter()方法的帮助。 -
this.arrayOfGradedCoins[i] = {"_id":key._id, "jaguar": this.item1,"wheels": this.item2} 这就是它所包含的,item1 将用于以汽车类型为例。因此,当我搜索 jaguar 时,它需要显示其中包含 jaguar 的 arrayOfGradedCoins 的迭代。所以我在一次迭代中只搜索 1 个属性。所以捷豹可能是 i=1 保时捷可能是 i=2。然后我会显示该特定迭代的详细信息。