2013-08-05 11 views
9

私はAngular.jsを学んでいます。 :P。しかし、私はここで立ち往生しています。私が望むのは、私の< .a>(アンカー)タグに別のクラスを追加することです。エレメントタグにクラスを追加して削除する

私のHTMLコード:私はそれを追加するサービスのリンクをクリックし

<a href="#/services" title="Services" class="scroll"> 
<a href="#/portfolio" title="Portfolio" class="scroll"> 

セイ「有効」クラス

<a href="#/services" title="Services" class="scroll enabled"> 
<a href="#/portfolio" title="Portfolio" class="scroll"> 

私は、ポートフォリオのリンクをクリックした場合、それは「有効」クラスを追加しますまた、サービスアンカータグから有効なクラスを削除します

<a href="#/services" title="Services" class="scroll"> 
<a href="#/portfolio" title="Portfolio" class="scroll enabled"> 

これはどうですか? ng-clickとng-classについて、ng-classサポートの3項演算子についても読んでいますか?彼らのドキュメントはそれについて何も言わない。 link

答えて

12

私も角度を始めている、と似たようなケースでは、私はディレクティブを使用しています、これをチェックアウト:

yourApp.directive('scroll', function() {   
    return { 
    restrict : 'C', 
     link: function(scope, element) { 
      element.bind("click" , function(e){ 
       $("a").removeClass("enabled"); // Here we need jQuery 
       element.addClass("enabled"); 
      });  
     } 
    } 
}); 


UPDATE 万歳を、私はjQueryのせずに解決策を見つけました! elementclickハンドラは次のようになります。

element.bind("click" , function(e){ 
    element.parent().find("a").removeClass("enabled"); // Vanilla jqLite! 
    element.addClass("enabled"); 
}); 

Plunker:http://plnkr.co/edit/jw16wW

+0

私はあなたのアイデアが好きです。しかし、これを求めて申し訳ありません。どのように私は現在のコードでこれを適用するのですか?私はdirectives.jsを作成しましたが、 "セレクタは実装されていません"というエラーを表示しています –

+0

@WonderingCoderは一見しています:http://plnkr.co/edit/w2dbbauZ2uuMh1QZ4hwB – Cherniv

+0

@WonderingCoder my fault、 'angular.element( "a") 'は動作しませんし、実際には「実装されていないセレクタ」が原因です。この場合、jQuery、imhoを使用することは合理的です。 – Cherniv

1

"activeTabは" 自己定義された変数であり、このよう

<a href="#/services" title="Services" ng-class="{active: $route.current.activeTab == 'services'}> 
    <a href="#/portfolio" title="Portfolio" ng-class="{active: $route.current.activeTab == 'portfolio'}> 

and in the app.js 
inject the route service like this 
    angular.module('myModel',[]). 
    config(['$routeProvider', function($routeProvider) { 
     $routeProvider.when('/services', { 
          templateUrl: 'my.tpl', 
          controller:,,myCtrl, 
          activeTab: "services" 
         }). 
         when('/portfolio', { 
          templateUrl: 'my2.tpl', 
          controller: myCtrl2, 
          activeTab: "portfolio" 
         }) 
    }); 

それを試して、NG-クラスがそれに頼る表示されます。

+0

こんにちは、お返事ありがとうございます。 didn; t仕事。クラス "enabled"を追加しません。 –

0

単にクラス

angular.element(document.querySelector(".yourClass")).removeClass("yourClass"); 

OR

angular.element(document.querySelector("#yourSelector")).removeClass("#yourSelector"); 

を削除するには、あなたの角度の関数内のコードを追加しますありがとう

関連する問題