我开始学习angularjs(我是初学者,所以请友善(。
我正在制作一个民意调查应用程序,我正在使用Angular来执行此操作
我有一个名为items
的数组范围,它包括将添加到民意调查的所有项目。
$scope.items = []
我正在制作一个错误处理脚本,该脚本将告知用户是否已经在items
数组中,并且我无法直接在数组中进行indexOf
方法以搜索是否已经存在,因为我的代码已经存在将数字直接添加到数组中,例如1. item1
,2. item2
,3. item3
,因此我想搜索项目[]中的所有索引,并在索引中执行indexOf
方法,以查看是否已经存在项目。
我有此代码,如果数组中的一个项目已经存在,并且将返回 false
,否则将返回true
,否则:
//number of items in the array
var itemNum = $scope.items.length + 1;
//the item which the user entered
var toBeAdded = $scope.pollItem;
//try to search the items[] array if an item already exists
var findItem = function (){
for (var i = 0; i < itemNum-1; i++) {
if ($scope.items[i].indexOf(toBeAdded) >= 0) {
return true
}else{
return false
}
}
}
//add the item into the poll if findItem() function returns false
if (!findItem) {
$scope.items.push(itemNum.toString() + " " + toBeAdded);
$scope.pollItem = "";
focus('pollItem');
}else{
alert('item already exists')
}
,但它总是返回" true"(即使我的项目数组为空(。我不知道我在做什么错。请帮助。
谢谢您可以帮助我的任何人。
当您通过var findItem = function() {...}
定义函数时,您必须通过findItem()
调用它,否则它不会执行,并且由于findItem
不是null,因此!findItem
始终为false
,因为findItem
被JavaScript识别为variable
。
因此,将if (!findItem)
更改为if (!findItem())
将解决您的问题。
参考下面的代码段。
var items = [];
var toBeAdded = {
test: 'test'
};
var findItem = function() {
for (var i = 0; i < items.length - 1; i++) {
if (items[i].indexOf(toBeAdded) >= 0) {
return true
} else {
return false
}
}
}
if (!findItem()) {
items.push(toBeAdded);
} else {
alert('item already exists');
}
console.log(items);