排序中多变量的AngularJS ngClass条件
我在angularjs中使用了多重排序,这里我想在单击的Li标记上添加类,当我使用下面代码的单值排序时,它可以正常工作:排序中多变量的AngularJS ngClass条件,angularjs,sorting,Angularjs,Sorting,我在angularjs中使用了多重排序,这里我想在单击的Li标记上添加类,当我使用下面代码的单值排序时,它可以正常工作: <li ng-class="{ active:sortType === 'rollno'}"><a ng-click="sortType = 'rollno';"><span>Sort by Rollno</span></a></li> <li ng-class="{ active: sortTy
<li ng-class="{ active:sortType === 'rollno'}"><a ng-click="sortType = 'rollno';"><span>Sort by Rollno</span></a></li>
<li ng-class="{ active: sortType === 'marks'}"><a ng-click="sortType = 'marks';"><span>Sort by marks</span></a></li>
一个数组不等于JavaScript中的另一个数组,即使两者包含相同的字符串:
console.log(['a'] === ['a']); // prints false
因此,您需要另一种方法来知道排序类型是['rollno','marks']
还是['marks','rollno']
你可以简单地使用
ng-class="{ active: sortType[0] === 'rollno' }"
或者您可以向控制器添加一个函数,如
$scope.isSortTypeEqualTo = function(sortType) {
return angular.equals($scope.sortType, sortType);
};
和使用
ng-class="{ active: isSortTypeEqualTo(['rollno','marks']) }"
一个数组不等于JavaScript中的另一个数组,即使两者包含相同的字符串:
console.log(['a'] === ['a']); // prints false
因此,您需要另一种方法来知道排序类型是['rollno','marks']
还是['marks','rollno']
你可以简单地使用
ng-class="{ active: sortType[0] === 'rollno' }"
或者您可以向控制器添加一个函数,如
$scope.isSortTypeEqualTo = function(sortType) {
return angular.equals($scope.sortType, sortType);
};
和使用
ng-class="{ active: isSortTypeEqualTo(['rollno','marks']) }"
将rollno或marks分配给onclick函数,则代码将工作。 您需要按如下方式更改代码才能工作
<li ng-class="{ active:(sortType =='rollno'|| sortType =='marks')}"><a ng-click="sortType ='rollno'"><span>Sort by Rollno</span></a></li>
<li ng-class="{ active:(sortType =='rollno'|| sortType =='marks')}"><a ng-click="sortType ='marks'"><span>Sort by marks</span></a></li>
按rollno排序
按标记排序
为onclick函数指定rollno或marks,则代码将起作用。
您需要按如下方式更改代码才能工作
<li ng-class="{ active:(sortType =='rollno'|| sortType =='marks')}"><a ng-click="sortType ='rollno'"><span>Sort by Rollno</span></a></li>
<li ng-class="{ active:(sortType =='rollno'|| sortType =='marks')}"><a ng-click="sortType ='marks'"><span>Sort by marks</span></a></li>
按rollno排序
按标记排序
您可以使用indexOf()
测试值是否在数组中,然后在数据ng类中使用它
<li data-ng-class="{ 'active' : (sortType.indexOf('rollno') == 0)}"><a ng-click="sortType = ['rollno','marks'];"><span>Sort by Rollno</span></a></li>
<li data-ng-class="{ 'active' : (sortType.indexOf('marks') == 0)}"><a ng-click="sortType = ['marks','rollno'];"><span>Sort by marks</span></a></li>
您可以使用indexOf()
测试值是否在数组中,然后在数据ng类中使用它
<li data-ng-class="{ 'active' : (sortType.indexOf('rollno') == 0)}"><a ng-click="sortType = ['rollno','marks'];"><span>Sort by Rollno</span></a></li>
<li data-ng-class="{ 'active' : (sortType.indexOf('marks') == 0)}"><a ng-click="sortType = ['marks','rollno'];"><span>Sort by marks</span></a></li>
我找到了问题的解决方案,但发布此答案是为了在同一方面帮助他人:-
我们可以简单地使用
ng-class="{ active: sortType[0] === 'rollno' }"
ng class=“{active:sortType[0]=='rollno'}”在按rollno排序的情况下
按卷排序no
对于ng class=“{active:sortType[0]=='marks'}”,在按标记排序的情况下也是如此
<a ng-click="sortType = ['marks','rollno'];"><span>Sort by marks</span></a>
按标记排序
谢谢:)我得到了问题的解决方案,但发布此答案是为了在相同方面帮助他人:-
我们可以简单地使用
ng-class="{ active: sortType[0] === 'rollno' }"
ng class=“{active:sortType[0]=='rollno'}”在按rollno排序的情况下
按卷排序no
对于ng class=“{active:sortType[0]=='marks'}”,在按标记排序的情况下也是如此
<a ng-click="sortType = ['marks','rollno'];"><span>Sort by marks</span></a>
按标记排序
谢谢:)就像你在Javascript中一样:{active:sortType==='rollno'| |'marks'}
不,先生,使用你的its将两个li标记都置为活动状态,但我想按Roll-no-active进行排序-{active:sortType====['rollno','marks']}并按活动状态下的标记进行排序-{active sortType===['marks','rollno'}。我希望你明白。感谢您在Javascript中所做的一切:{active:sortType==='rollno'| | |'marks'}
不,先生,使用您的its将两个li标记都置于活动状态,但我希望按滚动排序不活动-{active:sortType===['rollno','marks']}和按标记排序活动-{active sortType===['marks','rollno'}。我希望你明白。谢谢,这两个都会很活跃。你的代码基本上相当于data ng class=“{'active':true}”
好的,那么请你告诉我为什么OP在一个数组中同时分配两个值ng click=“sortType=['rollno','marks'];”
?因为他想先按rollno排序,然后按marks排序。也就是说,一旦按rollno排序,具有相同rollno的项目将按标记排序。我得到的全部内容就是添加一个类。不是吗?如果sortType等于['marks','marks']
,OP希望激活第一个li,如果sortType等于['marks','rollno']
,则激活第二个li。你的回答根本就没有那么回事。它只是传递一个非常复杂的布尔表达式,不管sortType的值是什么,它都是真的。阅读我的答案。两者都将始终处于活动状态。你的代码基本上相当于data ng class=“{'active':true}”
好的,那么请你告诉我为什么OP在一个数组中同时分配两个值ng click=“sortType=['rollno','marks'];”
?因为他想先按rollno排序,然后按marks排序。也就是说,一旦按rollno排序,具有相同rollno的项目将按标记排序。我得到的全部内容就是添加一个类。不是吗?如果sortType等于['marks','marks']
,OP希望激活第一个li,如果sortType等于['marks','rollno']
,则激活第二个li。你的回答根本就没有那么回事。它只是传递一个非常复杂的布尔表达式,不管sortType的值是什么,它都是真的。阅读我的答案。就在你的答案之前,我也做了同样的事情,得到了预期的结果。非常感谢您的回答::)@阿伦楚汉,你能帮我个忙吗。请只告诉我我的答案是否正确?我已经在我的代码中使用了下面的答案。就在你的答案之前,我做了同样的事情,并得到了预期的结果。非常感谢您的回答::)@阿伦楚汉,你能帮我个忙吗。请告诉我,只有我的答案是正确的或不正确的?我已经张贴了下面的答案,我在我的代码中使用。