Как узнать, какой тег «а» нажимается? AngularJs Way

0

Поэтому я уже искал этот вопрос, но их ответ не помог мне, поэтому я создал новую тему. Я хочу получить текст в теге, т.е. (Соло/партнер).

Это то, что внутри моего 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
Теги:

3 ответа

1
Лучший ответ

Лучше использовать $state service, предоставляемый Angular $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'
      });
});

У вас есть партнер и сольный html в папке каталога views/modals

HTML:

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

Соответствующий контроллер: Inject $state service

$scope.navigateTo = function(to) {
  $state.go(to);
  var encodedString = 'action=' +
    encodeURIComponent("Showsomething") 
    + '&position=' +
    encodeURIComponent(to);
};
  • 0
    у вас есть хорошая точка зрения ... но это состояние находится в моих службах ... поэтому я просто хочу, чтобы самая простая вещь о том, как передать слово соло и партнер, и так как нет необходимости изменять свойство href в теге
  • 0
    Внедрите службу в свой контроллер и у вас есть функция, которая возвращает состояния. Теперь используйте метод как: myService.getStates() для получения состояний из сервиса.
Показать ещё 4 комментария
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
    это дает мне ошибку в данных: 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;
};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню