2016-04-23 3 views
0

Итак, я уже искал этот вопрос, но их ответ не помог мне, поэтому я создал новую тему. Я хочу получить текст в теге i.e. (solo/partner).Как узнать, какой тег «a» нажат? AngularJs Way

Это то, что внутри моего site.html:

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

Это, что находится внутри моего controller.js:

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

ответ

1

Лучше с помощью $state услуги, предоставляемой углового $state.go('state');

Определите ваши маршруты (рекомендуется при использовании SPA). Не играйте с жестко запрограммированными хэшами в 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 партнером и сольного HTML в каталоге папки views/modals

HTML:

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

Соответствующий контроллер: Вводят $state служба

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

у вас есть хорошая точка .. но это состояние находится внутри моих сервисов .. поэтому я просто хочу простейшую вещь о том, как передать слово соло и партнер , и поскольку нет необходимости изменять свойство href в теге –

+0

Внесите сервис в свой контроллер и выполните функцию в вашей службе, которая возвращает состояния. Теперь используйте метод типа 'myService.getStates()' для извлечения состояний из службы. – softvar

+0

эффективна, если я просто отделяю контроллер партнера и соло? : D это мое единственное решение hahaha –

2

В вашем HTML:

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

Еще лучше, когда вы динамически загружать ссылки:

Контроллер:

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

HTML:

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

я пытаюсь его .. я буду отмечать ответ, как только он решит мою проблему :) –

+0

это дает m e ошибка в данных: 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; 
}; 
Смежные вопросы