2016-07-25 2 views
2

Раньше в моем коде я передавал идентификатор элемента в свой код и задавал ему переменную. Впоследствии я пытаюсь установить removeClass() из этого элемента.

//$scope.myID is equal to some id string like 'element123' 

$scope.clearClass = function() { 
    var target = angular.element(document.querySelector($scope.myID)); 
    target.removeClass('clicked'); 
} 

Я не верю, что правые переменный быть найден здесь, или передаются в querySelector правильно.

Документация говорит, что она должна быть такой: querySelector('#element123'), но я не знаю, как это сделать с переданной переменной, например $ scope.myID.

Как бы это сделать, чтобы, если бы было несколько элементов, например, кнопок, то, если бы кто-то нажал, addClass применим только к этой кнопке, а removeClass будет применяться к остальным кнопкам?

+0

Я хотел бы пойти на <элемент нг-класса = "{{MyId === 'element123' 'кликнули': ''}}" > – Damiano

+0

@ Damiano Цель, которую я пытаюсь достичь, заключается в сохранении идентификатора ранее щелкнутого элемента и уничтожении класса при щелчке на другом элементе, так что на этой странице всегда есть только один элемент. – NoReceipt4Panda

ответ

2

Не манипулируйте DOM в контроллере. Используйте ngClass директиву:

$scope.clearClass = function() { 
    $scope.clickedFlag = false; 
} 

и в HTML

<div ng-class="{ clicked: clickedFlag }"></div> 
+0

даст вам ответ, если вы добавите редактирование, как добавить класс, щелкнув по текущему элементу, удалить класс, щелкнув его со всех других элементов. Если функция 'clearClass' фактически является' ng-click' этого элемента? Я просто смущен тем, как это будет работать. – NoReceipt4Panda

+1

@VolcovMeter Используйте [ngFocus] (https://docs.angularjs.org/api/ng/directive/ngFocus) для обнаружения щелчка по элементу ('ng-focus = «clickedFlag = true» ') и [ngBlur] (https://docs.angularjs.org/api/ng/directive/ngBlur), когда он сфокусирован (' ng-blur = "clickedFlag = false" ') - Добавить те, на ** вход ** элемент –

+0

@AlonEitan вы можете отправить сообщение в качестве ответа? Я пробую ваше предложение, но, к сожалению, все элементы добавляются с классом «щелкнули» с вашим кодом. – NoReceipt4Panda

 Смежные вопросы

  • Нет связанных вопросов^_^