В Angular есть способ доступа к типу элемента, который был нажат? У меня есть следующее в jQuery, и он отлично работает, проблема в том, что я не знаю, как сделать эквивалент в проекте Angular, на который меня попросили посмотреть.
// Click action
$(".contactlist").on("click", function(e) {
if (!$(e.target).is(':checkbox') && !$(e.target).is("li:nth-child(1)")) {
var token = $(this).data('token');
window.location.href = "XYZ.php?page=contacts&token=" + token;
}
});
Как я могу изменить этот обработчик углового события, чтобы работать как вышеописанный jQuery?
$scope.eventHandler = function(data) {
window.location.href = "XYZ.php?page=contacts&token=" + data.token;
};
Что-то вроде этого????
$scope.eventHandler = function(data) {
if (!$(this.target).is(':checkbox') && !$(this.target).is("li:nth-child(1)")) {
window.location.href = "XYZ.php?page=contacts&token=" + data.token;
}
};
HTML-код
<li><input type="checkbox" class="check" data-token="{{data.token}}" name="addselect[]"></li>
Используйте директиву с элементом element.bind.
app.directive('clickMe', function() {
return function(scope, element, attr, html) {
element.bind('mouseup', function() {
console.log(JSON.stringify(attr));
});
};
});
Ваш HTML будет выглядеть так:
<input type="checkbox" class="check" data-token="{{data.token}}" click-me name="addselect[]">
Возвращает следующее для флажка:
{"$attr":{"type":"type","class":"class","token":"data-token","clickMe":"click-me","name":"name"},"$$element":{"0":{"ng339":7},"length":1},"type":"checkbox","class":"check","token":"","clickMe":"","name":"addselect[]","$$observers":{"token":[]}}
В директиве, если вы просто хотите получить тип, attr.type предоставит его.
checkbox
$(this.target)
- это jQuery, а не Angular.