2016-02-13 88 views
0

我对Angularjs相当陌生我一直试图让这段代码正常工作,但我一直未能。 我需要点击添加和删除类。Angularjs addClass/removeClass

我有jQuery的版本,做工精细:

$('.toggle').on('click', function() { 
     $('.container').stop().addClass('active'); 
}); 

    $('.close').on('click', function() { 
     $('.container').stop().removeClass('active'); 
}); 

在我的HTML:

<div class="toggle" toggle-class="active"></div> 

从我读过,使用指令将是最适合的。 在我的指令我有这个代码:

app.directive('toggleClass', function() { 
     return { 
    restrict: 'A', 
    controller: 'LoginCtrl', 
    controllerAs: 'LoginC', 
link: function(scope, element) { 
     element.click(function(){ 
      if(element.attr('toggle') === 'active') { 
       angular.element(element).addClass('active'); 
      } else { 
       angular.element(element).removeClass('active'); 

      } 
     }); 
    } 
}; 

});

我错过了一些东西。请有人建议?我真的很感激。 谢谢

+0

'toggle'不是HTML中的属性。它是属性类的一个值。所以“element.attr('toggle')”在你的情况下总是未定义。 –

回答

-1

由于佐渡指出,这是更容易

<div ng-class="{'active':someVal}" ng-click="someVal = !someVal"></div> 
+3

您还可以添加角度ng-click指令,如

+0

对不起,脑冻结 - 这确实是最好的方法 –

+0

告诉我它;) – 1313

0

你的指令,可以大大简化。

angular.module("myApp").directive('toggleClass', function() { 
    return { 
     restrict: 'A', 
     controller: 'LoginCtrl', 
     controllerAs: 'LoginC', 
     link: function(scope, elem, attrs) { 
      elem.on('click', function(e){ 
       if (attrs.toggleClass === 'active') { 
        elem.toggleClass('active'); 
       }; 
      }); 
     } 
    } 
}) 
+0

谢谢@georgeawg。我已经结束了使用ng类,它工作正常。不知道什么是最好的,但现在它是一个更简单的解决方案。 ;) – 1313