我开始学习angularjs(我是初学者,所以请善待)。
我正在制作民意调查应用,而且我使用角色来执行此操作
我有一个名为items
的数组范围,其中包含将添加到投票中的所有项目。
$scope.items = []
我正在制作一个错误处理脚本,该脚本会告知用户特定的投票项目是否已经在items
数组中而我无法直接在数组中执行indexOf
方法来搜索如果一个项目已经存在,因为我的代码会直接将数字添加到数组中,如1. item1
,2. item2
,3. item3
所以我想搜索项目[]中的所有索引并执行索引中的indexOf
方法,以查看项目是否已存在。
我有这个代码,如果一个项目已经存在于数组中,那么它应该返回true
,否则将返回false
:
//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')
}
但它总是返回&#34; true&#34; (即使我的items数组为空)。我不知道自己做错了什么。请帮忙。
感谢任何可以帮助我的人。
答案 0 :(得分:1)
当你通过var findItem = function() {...}
定义一个函数时,你必须通过findItem()
调用它,否则它将不被执行,因为findItem
不是null,那么{{1始终为!findItem
,因为false
被javascript识别为findItem
。
所以将variable
更改为if (!findItem)
将解决您的问题。
请参阅下面的代码段。
if (!findItem())