2016-04-23 10 views
0

私はすでにこの質問を検索しましたが、彼らの答えは私を解決しなかったので、私は新しいトピックを作成しました。タグのテキストを取得したい、つまり(ソロ/パートナー)。どの「a」タグがクリックされたかを知る方法? AngularJs Way

これは私のsite.htmlの内側に何である:いただきました私のcontroller.js内部

<a href="#/app/partnerlistt" style="text-decoration:none"> 
    <div class="va-container"> 
      <div class="col va-btn"><b>partner</b></div> 
      </div> 
</a> 


<a href="#/app/sololist" style="text-decoration:none"> 
     <div class="va-container"> 
     <div class="col va-btn"><b>solo</b></div> 
      </div> 
</a> 

これは、次のとおりです。あなたのHTML内

var encodedString = 'action=' + 
    encodeURIComponent("Showsomething") + 
    '&position=' + 
    encodeURIComponent("solo/partner");//this is where my clicked a tag should be passed 

答えて

1

(あなたはSPAを使用するときにお勧めします)、あなたのルートを定義する角度$state.go('state');

が提供する$stateサービスを利用して良いです。 AngularJSでハードコードされたハッシュで遊んではいけません。

<a ng-click="navigateTo('partner')" style="text-decoration:none"> 
</a> 
<a ng-click="navigateTo('solo')" style="text-decoration:none"> 
</a> 

対応するコントローラ:フォルダディレクトリviews/modals

HTMLで

angular 
    .module('myApp') 
    .config(function ($stateProvider) { 
     $stateProvider 
     .state('partner', { 
     url:'/app/partnerlistt', 
     templateUrl: 'views/modals/partner.html' 
     }) 
     .state('solo',{ 
     url:'/app/sololist', 
     templateUrl: 'views/modals/solo.html' 
     }); 
}); 

てきたパートナーとソロのhtml注入する$stateサービス

$scope.navigateTo = function(to) { 
    $state.go(to); 
    var encodedString = 'action=' + 
    encodeURIComponent("Showsomething") 
    + '&position=' + 
    encodeURIComponent(to); 
}; 
+0

あなたは良い点を持っていますが、その状態は私のサービスの中にあるので、私はちょうど単語soloとパートナーまた、タグ内のhrefプロパティを変更する必要がないため、 –

+0

コントローラ内にサービスを注入し、サービス内に状態を返す関数を持たせます。次に、 'myService.getStates()'のようなメソッドを使用して、サービスから状態を取得します。 – softvar

+0

パートナーのコントローラーとソロだけを分離すれば効率的ですか? :Dは私の唯一の解決策ですhahaha –

2

:あなたのコントローラで

<a ng-click="go('partner')" style="text-decoration:none"> 
</a> 
<a ng-click="go('solo')" style="text-decoration:none"> 
</a> 

$scope.go = function(goTo) { 
    // do the hash redirect 
    window.location.hash = '#/app/' + goTo + 'list'; 
    // Here you can use the goTo parameter 
    var encodedString = 'action=' + 
    encodeURIComponent("Showsomething") 
    + '&position=' + 
    encodeURIComponent(goTo); 
} 
0123あなたが動的にリンクをロードするとき

さらに良いです:

コントローラー:

$scope.links = ['solo', 'partner']; 

HTML:

<div ng-repeat="link in links"> 
    <a ng-click="go(link)"> 
    {{link}} 
    </a> 
</a> 
+0

私はそれをしようとしています。..私はそれが私の問題を解決するとすぐに答えをマークします:) –

+0

それはmを与えている電子のエラー:encodedString、... ReferenceError:encodedStringは定義されていません –

0
あなたはあなたのコード

に小さな変更でそれを行うことができます

<a ng-click="goTo('#/app/partnerlistt', 'partner');" style="text-decoration:none"> 
     <div class="va-container"> 
       <div class="col va-btn"><b>partner</b></div> 
       </div> 
    </a> 


    <a ng-click="goTo('#/app/sololist', 'solo');" style="text-decoration:none"> 
      <div class="va-container"> 
      <div class="col va-btn"><b>solo</b></div> 
       </div> 
    </a> 

JS

$scope.goTo = funtion(url, type){ 
    console.log(type); 
    $window.location.href= url; 
}; 
関連する問題