ng上的Angularjs谓词如果不起作用

ng上的Angularjs谓词如果不起作用,angularjs,Angularjs,我正在尝试使用谓词函数为AngularJS应用程序实现排序。这是我的密码 <td> <a href="" ng-click="predicate = 'date'; reverse=!reverse"> Time <span ng-show="predicate == 'date'"> <span ng-show="!reverse"> <img

我正在尝试使用谓词函数为AngularJS应用程序实现排序。这是我的密码

<td>
    <a href="" ng-click="predicate = 'date'; reverse=!reverse">
        Time
        <span ng-show="predicate == 'date'">
            <span ng-show="!reverse">
                <img src="img/ascending.gif">
            </span>
            <span ng-show="reverse">
                <img src="img/descending.gif">
            </span>
        </span>
    </a>
</td>

<td ng-if="SId==2">
    <a href="" ng-click="predicate = 'name'; reverse=!reverse">
        Name
        <span ng-show="predicate == 'name'">
            <span ng-show="!reverse">
                <img src="img/ascending.gif">
            </span>
            <span ng-show="reverse">
                <img src="img/descending.gif">
            </span>
        </span>
    </a>
</td>

<td ng-if="SId==2">
    <a href="" ng-click="predicate = 'rno'; reverse=!reverse">
        RNO
        <span ng-show="predicate == 'rno'">
            <span ng-show="!reverse">
                <img src="img/ascending.gif">
            </span>
            <span ng-show="reverse">
                <img src="img/descending.gif">
            </span>
        </span>
    </a>
</td>

<td ng-if="SId==1">
    <a href="" ng-click="predicate = 'phoneNumber'; reverse=!reverse">
        Phone Number
        <span ng-show="predicate == 'phoneNumber'">
            <span ng-show="!reverse">
                <img src="img/ascending.gif">
            </span>
            <span ng-show="reverse">
                <img src="img/descending.gif">
            </span>
        </span>
    </a>
</td>


我有两个仪表板,它们使用相同的HTML页面。但是列名是不同的。因此,列名是基于ng if条件显示的(SId=1是第一个仪表板,SId=2是第二个仪表板)。现在,两个仪表板中的列都显示正确。但是当我对列名进行排序时,如果条件不是排序,则具有ng的列有自己的范围。

ng if
。因此,当您在ng if中执行
predicate='rno'
时,您是在ng if范围中创建
predicate
属性,而不是修改控制器范围的谓词

使用函数设置谓词:

$scope.sortBy = function(property) {
    $scope.predicate = property; 
    $scope.reverse = !$scope.reverse;
}


ng如果
有自己的范围。因此,当您在ng if中执行
predicate='rno'
时,您是在ng if范围中创建
predicate
属性,而不是修改控制器范围的谓词

使用函数设置谓词:

$scope.sortBy = function(property) {
    $scope.predicate = property; 
    $scope.reverse = !$scope.reverse;
}



谢谢@JB Nizet。它起作用了。但是如何在这里添加图标没问题,我得到了答案。谢谢@JB Nizet。它起作用了。但是如何在这里添加图标没问题,我得到了答案。谢谢@JB Nizet。它起作用了。但是如何在这里添加图标没问题,我得到了答案。