AngularJS中的字符串比较

时间:2015-06-23 06:27:29

标签: javascript json angularjs ionic-framework string-comparison

我正在尝试比较AngularJS中的两个字符串,我在网上看到了一些例子。据我了解,你可以使用angular.equals(str1,str2),你可以使用===,你可以使用==如果你确定两者都是字符串......

我已经尝试了所有三个,但我没有得到结果。我所做的事情肯定是错的,但我不知道它是什么。

当我运行代码时,会调用inc1()函数。第一个警报显示“inc1 called”。但是第二个警报“Inside for loop”只执行一次。它应该执行两次,不是吗?

if(条件)内的警报根本不执行。如果我删除'if'块,则警告“Inside for loop”会运行两次。

如果有人能告诉我这里我做错了什么,我会非常感激。我使用了angular.equals(),===和==,但每次都会发生同样的事情。

这是HTML和AngularJS代码的用法:

HTML:

<a class="tab-item" ng-repeat = "x in items" ng-if="name==x.names" ng-click="inc1(name)">
  <i class="icon ion-thumbsup"></i>
  Like
 </a> 

AngularJS:

$rootScope.items = [
{ id: 1, names: 'Dolphin', image: 'dolphin.jpg'}, { id: 2, names: 'Donkey', image: 'donkey.jpg'}];

$scope.inc1 = function(name) {

alert("inc1 called");
for(var i=0;i<$rootScope.items.length;i++)
{
    alert("Inside for loop");
    if (name === $rootScope.items.names[i])
        {
        alert("If condition satisfied");
        }
}
}

//说,名字是'海豚'

3 个答案:

答案 0 :(得分:6)

您正在迭代错误的节点:)

for(var i=0;i<$rootScope.items.length;i++)
{
    alert("Inside for loop");
    if (name === $rootScope.items[i].names) // you iterate over items, not names, which it an Json property inside item
        {
        alert("If condition satisfied");
        }
}

答案 1 :(得分:2)

您应该与$ rootScope.items [i] .name进行比较,而不是$ rootScope.items.names [i]

答案 2 :(得分:0)

问题是名称总是未定义$ scope.name未定义。在视图中而不是ng-click =&#34; inc1(name)&#34;把ng-click =&#34; inc1(x.name)&#34;。