Javascript 如何将这个toggleClass函数创建为AngularJS指令?
在我了解Angular和jQuery之前,有过这样的简单的Javascript: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
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>