Как передать идентификатор ссылки на контроллер angularJS?

sam jackson спросил: 12 мая 2018 в 04:58 в: javascript

У меня есть что-то вроде этого:

<a href="#" title="Post 1" id="car1"> Audi car 
</a><a href="#" title="Post 1" id="car2"> BMW car 
</a>

как передать идентификатор контроллеру? Я пробовал следующее:

<a href="#" title="Post 1" id="car1" onclick="getCarID(this.id)" > Audi car  </a>

Это работает вне углового контроллера, но я хочу, чтобы он находился внутри контроллера, поэтому я понял, что мне нужно использовать ng-click но тогда this.id не будет работать. Как заставить его работать? Где мой контроллер и getCarID у меня он выглядит следующим образом:

angular.module('myModule')
.controller('carController', function($scope)
{$scope.getCarID = function(elementID)
    {  
        var car = document.getElementById(elementID);
        console.log(elementID + " is being pressed");
    }
)}

Если что-то неясно или нужно объяснять, то прокомментируйте это, и я отредактирую вопрос.

Спасибо за ваше время

2 ответа

Есть решение
Guillaume Georges ответил: 12 мая 2018 в 05:24

Как насчет использования идентификатора цели события?

<a href="#" title="Post 1" id="car1" ng-click="getCarID($event)">

И в вашем контроллере:

$scope.getCarID = function(event) {
   var id = event.target.id;
}
function Ctrl($scope) {

    $scope.action = function(event) {
        console.log('clicked id is: ' + event.target.id);
    };
}
<!doctype html>
<html ng-app>
   <head>
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
   </head>
   <body>
      <div ng-controller="Ctrl">
         <a id="123" ng-click="action($event)">click</a>
      </div>
   </body>
</html>
sam jackson ответил: 12 мая 2018 в 05:05
Он говорит event is not defined. Как я могу это определить?
sam jackson ответил: 12 мая 2018 в 05:08
и он должен быть функцией области, чтобы я мог получить к ней доступ из представления. Правильно ?!
laughingpine ответил: 12 мая 2018 в 05:22
вам нужно использовать $ event из ng-click и ссылаться на него в вашей функции ng-click="func($event)" и func function($event)...
sam jackson ответил: 12 мая 2018 в 05:24
Я видел это решение по другому вопросу о stackoverflow, но это работает только с кнопкой, и оно не работает с < a > ссылка. Спасибо за ваше время, но это все еще не работает :(
Guillaume Georges ответил: 12 мая 2018 в 05:25
@samjackson полностью работает с < a > теги. Проверьте фрагмент.
Brian Reynolds ответил: 12 мая 2018 в 05:04

Вам нужно добавить отсутствующую метку кавычки, <a href="#" title="Post 1" id="car1" onclick="getCarID(this.id)" > Audi car </a>

sam jackson ответил: 12 мая 2018 в 05:06
Это не проблема. Я просто набрал ошибку, которую исправил. Спасибо, что сообщили мне об этом
Brian Reynolds ответил: 12 мая 2018 в 05:19
Gotcha, используйте функцию области видимости, затем с помощью ng-click, аналогично выше. $ scope.getCarID = function () {var id = event.target.id; console.log (id +"нажата"); }
sam jackson ответил: 12 мая 2018 в 05:25
Я попробовал, но он все еще говорит event is not defined :(