Ответ 1
В то время как AngularJS позволяет вам получить руку на событие клика (и, следовательно, его цель) со следующим синтаксисом (обратите внимание на аргумент $event
на функцию setMaster
; здесь: http://docs.angularjs.org/api/ng.directive:ngClick):
function AdminController($scope) {
$scope.setMaster = function(obj, $event){
console.log($event.target);
}
}
это не очень важно для решения этой проблемы. С AngularJS основное внимание уделяется манипуляции с моделью. Один из них будет мутировать модель и позволить AngularJS определить рендеринг.
Угловой способ решения этой проблемы (без использования jQuery и без необходимости передавать аргумент $event
):
<div ng-controller="AdminController">
<ul class="list-holder">
<li ng-repeat="section in sections" ng-class="{active : isSelected(section)}">
<a ng-click="setMaster(section)">{{section.name}}</a>
</li>
</ul>
<hr>
{{selected | json}}
</div>
где методы в контроллере будут выглядеть так:
$scope.setMaster = function(section) {
$scope.selected = section;
}
$scope.isSelected = function(section) {
return $scope.selected === section;
}
Вот полный jsFiddle: http://jsfiddle.net/pkozlowski_opensource/WXJ3p/15/