2016-02-13 114 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