HTML:
<body ng-app="ap" ng-controller="con">
<div ng-class="class">{{class}}</div>
<button id="button1" ng-click="changeClass($event)">Change Class</button>
<div ng-class="class1">{{class1}}</div>
<button id="button2" ng-click="changeClass($event)">Change Class</button>
</body>
JS:
var app = angular.module("ap",[]);
app.controller("con",function($scope){
$scope.class = "red";
$scope.class1 = "red";
$scope.changeClass = function(event){
console.log(event.currentTarget.id);
if(event.currentTarget.id === "button1")
if ($scope.class === "red")
$scope.class = "blue";
else
$scope.class = "red";
else if(event.currentTarget.id === "button2")
if ($scope.class1 === "red")
$scope.class1 = "blue";
else
$scope.class1 = "red";
};
});
Fiddle
Я должен был переработан код немного больше. Однако моя первоначальная идея заключается в том, что вам нужно будет пройти в $event
вместе с ng-click
и предоставить идентификаторы кнопке для того, чтобы однозначно идентифицировать их через event.currentTarget.id
Также скрипку из Nghi Нгуен имеет смысл сделать это с директивой так как ваш же набор элементов в два раза. Инкапсулируйте их внутри директивы. Таким образом, вам даже не нужно использовать $ event, чтобы определить идентификатор вашей кнопки, и контроллер будет обрабатывать changeClass только для определенной директивы.
EDIT1:
var app = angular.module("ap",[]);
app.controller("con",function($scope){
$scope.class = "red"; // default class
$scope.changeClass = function($event){
if ($($event.target).prev().hasClass('red')) {
$($event.target).prev().removeClass('red').addClass('blue');
} else {
$($event.target).prev().removeClass('blue').addClass('red');
}
};
});
HTML:
<body ng-app="ap" ng-controller="con">
<div ng-class="class">{{class}}</div>
<button ng-click="changeClass($event)">Change Class</button>
<div ng-class="class">{{class}}</div>
<button ng-click="changeClass($event)" >Change Class</button>
</body>
Обычно ваши повторяющиеся элементы будут связаны с повторением структуры данных в области действия модели. Затем вы можете использовать свойства каждого элемента, чтобы помочь определить соответствующий класс. Казалось бы, вы упростили демо. Каков ваш реальный случай использования в мире? – charlietfl
Я создаю складной контент, когда вы нажимаете изображение svg, оно вращается -90degress, проблема в том, что если я нажму на любой svg, изменение класса применяется для каждого svg. – Frutis
Хорошо .... но являются ли разделы контента/svg не отображаемыми на основе модели данных в контроллере? Вот как обычно работают угловые приложения – charlietfl