Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序中多变量的AngularJS ngClass条件_Angularjs_Sorting - Fatal编程技术网

排序中多变量的AngularJS ngClass条件

排序中多变量的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

我在angularjs中使用了多重排序,这里我想在单击的Li标记上添加类,当我使用下面代码的单值排序时,它可以正常工作:

<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的值是什么,它都是真的。阅读我的答案。就在你的答案之前,我也做了同样的事情,得到了预期的结果。非常感谢您的回答::)@阿伦楚汉,你能帮我个忙吗。请只告诉我我的答案是否正确?我已经在我的代码中使用了下面的答案。就在你的答案之前,我做了同样的事情,并得到了预期的结果。非常感谢您的回答::)@阿伦楚汉,你能帮我个忙吗。请告诉我,只有我的答案是正确的或不正确的?我已经张贴了下面的答案,我在我的代码中使用。