我有2个清单。一个更大,一个更小。我添加了无限滚动以继续将较大列表中的项目添加到较小的列表中。
// Bigger list (data from DB)
var data;
// Smaller list
$scope.projects = [];
$scope.$watch('projectSearch', function (val) {
if (typeof val !== 'undefined' && val !== "") {
//console.log("SEARCH: " + val);
for (var a = 0; a < data.length; a++) {
if (data[a].name.toLowerCase().indexOf(val) > -1) {
console.log("FOUND: " + data[a].name);
if($scope.projects.indexOf(data[a].name) === -1) {
console.log("PUSHED " + data[a].name);
$scope.projects.push( data[a]);
} else {
console.log("ALREADY IN " + data[a].name);
}
}
}
}
});
搜索表单:
<input id="search" ng-model="projectSearch" placeholder="Search ..."/>
问题是它不断将项目推送到新列表。它没有正确检查if语句
if($scope.projects.indexOf(data[a].name) === -1) {
console.log("PUSHED " + data[a].name);
$scope.projects.push( data[a]);
}
答案 0 :(得分:3)
您应该检查data[a]
,而不是其属性name
if($scope.projects.indexOf(data[a]) === -1) {
console.log("PUSHED " + data[a].name);
$scope.projects.push( data[a]);
}
另外,您可以在复制后删除data[a]
以便更快地进行下一次搜索
答案 1 :(得分:1)
$scope.projects
的类型应为string
,假设data[a].name
为字符串,则indexOf函数正确