2016-04-23 5 views
0

Also ich habe bereits über diese Frage gesucht, aber ihre Antwort hat meine nicht gelöst, also habe ich ein neues Thema erstellt. Ich möchte den Text im a-Tag erhalten, d. H. (Solo/Partner).Wie kann man wissen, auf welches "a" -Tag geklickt wurde? AngularJs Way

Dies ist, was in meinem site.html ist:

<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> 

Dies ist, was ist mein controller.js innen:

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

Antwort

1

Bessere $state Service mit $state.go('state');

von Angular bereitgestellt

Definieren Sie Ihre Routen (empfohlen, wenn Sie SPA verwenden). Spielen Sie niemals mit hardcoded Hashes in AngularJS.

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' 
     }); 
}); 

Have Partner und Solo html in einem Ordner Verzeichnis views/modals

HTML:

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

Entsprechende Controller: Injizieren $state Service

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

Sie haben einen guten Punkt .. aber dieser Zustand ist in meinen Diensten .. so will ich einfach die einfachste Sache auf, wie man das Wort solo und Partner übergibt und da die Eigenschaft href in einem Tag nicht geändert werden muss –

+0

Den Service in Ihren Controller injizieren und eine Funktion in Ihrem Service haben, die die Zustände zurückgibt. Verwenden Sie jetzt die Methode wie: 'myService.getStates()', um Zustände aus dem Dienst abzurufen. – softvar

+0

ist es effizient, wenn ich nur den Controller von Partner und Solo trennen? : D das ist meine einzige Lösung hahaha –

2

in Ihrem HTML:

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

In Ihrem Controller :

$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); 
} 

Noch besser ist es, wenn Sie dynamisch die Links laden:

Controller:

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

html:

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

ich versuche es aus .. Ich werde Antwort markieren, sobald es mein Problem gelöst hat :) –

+0

es gibt m e ein Fehler in den Daten: encodedString, ... ReferenceError: encodedString ist nicht definiert –

0

Sie können es mit kleinen Änderungen im Code erfolgen

<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; 
}; 
Verwandte Themen