Я относительно новичок в AngularJS и подозреваю, что не понимаю концепцию. Я также использую Twitter Bootstrap и загрузил jQuery.
Рабочий процесс: пользователь щелкает ссылку из списка, обновляется раздел «мастер», и пользователь нажимает на ссылку, чтобы получить активный класс.
Основная HTML-разметка:
<ul class="list-holder" ng-controller="adminController">
<li><a ng-click="setMaster('client')">Clients</li>
<li><a ng-click="setMaster('employees')">Employees</li>
<li><a ng-click="setMaster('etc')>Etc...</li>
</ul>
Делаем это в jQuery:
jQuery(".list-holder").on('click', 'a', function(event){
event.preventDefault();
jQuery(".list-holder li").removeClass('active');
jQuery(this).parent('li').addClass('active');
});
Но я не могу понять, как интегрировать Angular и jQuery, чтобы добиться этого, потому что я использую Angular, чтобы получить основной список (в форме JSON) с сервера и обновить список на странице.
Как мне это интегрировать? Кажется, я не могу найти элемент, на который нажал, когда нахожусь в функции углового контроллера
контроллер:
function adminController($scope)
{
$scope.setMaster = function(obj)
{
// How do I get clicked element's parent li?
console.log(obj);
}
}
ng-click="setMaster(section, $event)"
просто один на один.<a ng-click="doSomething(); $event.stopPropagation()">Click Just Me</a>
$event.target
такое использование не может быть «угловым путем», я чувствую, что иметь большойng-repeat
список с каждым элементом, нуждающимся в слушателе для оценки изменений, неэффективно? Нажатие на один элемент будет означать, что каждый элемент во всем списке должен быть переоценен правильно? почему бы просто не нацелить этот элемент с помощью$event.target
переключения класса CSS, например. Что вы думаете? Я работаю над приложением PhoneGap, и мне нужно выжать все возможные улучшения.$event.currentTarget
вместо$event.target
. Если элемент с ng-click имеет дочерние элементы, если дочерний элемент нажат,$event.target
становится дочерним элементом.$event.currentTarget
будет всегда предназначаться для элемента с назначенным ng-щелчком.