У меня есть следующий код, где я пытаюсь переключить первое вхождение класса. Проблема в том, что это не работает, и я понятия не имею, почему нет.угловая директива переключает класс
(function() {
'use strict';
angular.module('someApp')
.directive('eventButton', function() {
return {
restrict: 'E',
scope: {
eventItemDisplayed: '@'
},
transclude: true,
replace: false,
template: '<button class="btn btn-default" ng-click="toggleEvent()">{{text}}</button>',
link: function ($scope, element, attrs) {
$scope.eventItemDisplayed = false;
$scope.text = 'Show'
$scope.toggleEvent = function() {
element.find('event-details:first').toggleClass('hide-event');
$scope.eventItemDisplayed = ($scope.eventItemDisplayed) ? false : true;
if ($scope.eventItemDisplayed) {
$scope.text = 'Show';
} else {
$scope.text = 'Hide';
}
}
}
}
});
})();
HTML, выглядит следующим образом:
<event-button></event-button>
<div class="event-details hide-event">
Если я использую
element.next().toggleClass('hide-element')
Затем он работает отлично, т.е. он добавляет класс к элементу, как и ожидалось. Я подозреваю, что это потому, что next() возвращает элемент, тогда как find() возвращает селектор, представляющий класс?
Какая цель вы здесь? Я спрашиваю, потому что похоже, что вы хотите ng-class, а не пользовательскую директиву. –
У меня есть неупорядоченный список с переменными элементами, разбитыми на разделы. Только один раздел должен иметь класс, который переключается. В верхней части блока разделов есть кнопка в каждом элементе. Когда кнопка нажата, она применяет класс к средней части. – rilester
см. Мой обновленный ответ @rilester –