Javascript 如何将这个toggleClass函数创建为AngularJS指令?

Javascript 如何将这个toggleClass函数创建为AngularJS指令?,javascript,angularjs,Javascript,Angularjs,在我了解Angular和jQuery之前,有过这样的简单的Javascript: function toggleClass(e, c) { var classes = e.className.split(' '); var match = false; for(var i=0; i<classes.length; i++) { if(classes[i] === c) { match = true; c

在我了解Angular和jQuery之前,有过这样的简单的Javascript:

function toggleClass(e, c) {
    var classes = e.className.split(' ');
    var match = false;
    for(var i=0; i<classes.length; i++) {
        if(classes[i] === c) {
            match = true;
            classes.splice(i,1);
            break;
        }
    }
    if(!match) classes.push(c);
    e.className = classes.join(' ');
}

如何将其作为Angular中的指令实现?

您可以使用AngularJs的指令,而不是创建另一个指令

angular.module('demo',[])
.controller('Ctrl',函数($scope){
$scope.toggleRed=true;
});
.box{
填充:50px;
显示:内联块;
背景色:#EFEF;
}
.盒子,红盒子{
背景色:红色;
}

点击我

Angular不是jQuery,因此您的思考过程不应该是添加、删除类或显示隐藏元素,或者在这些行上执行任何操作

请参考这篇SO文章以获得一些好的建议

在角度模型中,驱动视图

您应该使用标准的
ng class
指令执行操作

假设您有一个用户网格,并且希望在用户单击表示用户已被选中的行时高亮显示行。您可以将行定义为html

<tr ng-repeat='user in users' ng-click='user.selected=!user.selected' ng-class={'active': user.selected}>
</tr>


现在,
user.selected的状态驱动视图并在每次单击时切换类。

我猜您也可以为
ng class
中使用的对象使用范围变量,并为
ng click
使用范围函数。是的,您也可以这样做,事实上,这样测试更容易。这正是我想要的!
<tr ng-repeat='user in users' ng-click='user.selected=!user.selected' ng-class={'active': user.selected}>
</tr>