href переопределяет ng-click со значением параметра в AngularJS
HTML:
<a href="/my-subscription" ng-click="MySubscription('<%= user._id %>')">My Subscription</a>
Код углового контроллера:
$scope.MySubscription = function(id){
console.log(id);
};
Хотя я перенаправляю страницу моей подписки, мне нужно получить значение, но href переопределяет его... Помогите мне разобраться в этой проблеме
Отредактировано:
Для перенаправления вы должны использовать $location.path(url)
в своем методе.
В вашем js:
Внесите $location
в свой контроллер:
.controller('MyCtrl', function($scope, $location) {});
Затем:
$scope.MySubscription = function(event, id){
$location.path('/my-subscription');
console.log(id);
};
и в вашем html:
<a ng-click="MySubscription($event, '<%= user._id %>')">My Subscription</a>
Во-первых, вы можете использовать ng-href
вместо своего href
. Я знаю, что вы не разрешаете (через угловое) значение вашего href, но он играет более приятным с ng-click, если вы решите добавить к этому логику. Во-вторых, ваш ng-click может предотвратить поведение по умолчанию при нажатии на элемент ахор. Для этого вам нужно вызвать.preventDefault() для события. Чтобы вам нужно было перейти к следующему методу:
<a href="/my-subscription" ng-click="MySubscription($event, '<%= user._id %>')"
>My Subscription</a>
,
$scope.MySubscription = function(event, id){
event.preventDefault();
console.log(id);
};
Наконец, вы можете встроить свой preventDefault вместо передачи $ event в метод следующим образом:
<a href="/my-subscription"
ng-click="$event.preventDefault();MySubscription('<%= user._id %>')"
>My Subscription</a>
Но тогда вам нужно снова удалить event
из своего метода - сменив его на свой оригинальный метод MySubscription