Выбирайте элементы в домене, только если у них отключен атрибут - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь получить элементы из Dom только отключен выберите только те, у которых атрибут отключен. Я пытаюсь применить его в пользовательской директиве:

HTML:

                <deb-button 
                base-path="assets\assets-angular" 
                textbtn="Primary" 
                colorbtn="primary"
                disabled="disabled">
                </deb-button>

JS

.directive('debButton', function () {
return {
  restrict: 'EA',
  templateUrl: function (element, attrs) {
    return attrs.basePath + "/templates/debbutton.html";
  },
  scope: {
    textbtn: '@',
    colorbtn: '@',
    isdisabled: '@'
  },
  controller: ['$scope', function ($scope) {
    var b = document.getElementsByTagName('deb-button');
    if (b) {
      console.log(b);
    }      
  }],
  link: function ($scope, colorbtn, isdisabled) {
    if (!$scope.colorbtn) {
      $scope.colorbtn = 'primary';
    }
  }
};

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

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

Если вы просто хотите получить все отключенные кнопки deb, вы можете сделать это, например, так

var b = document.querySelectorAll('deb-button:disabled')

Но если вы хотите получить все элементы, для которых атрибут disabled имеет значение disabled

var b = document.querySelectorAll('deb-button[disabled="disabled"]');

Но если вы хотите использовать getElementsByTagName, вы можете выполнить циклпо результату getElementsByTagName и отфильтруйте кнопки deb, у которых нет отключенного атрибута

ES6:

var b = document.getElementsByTagName('deb-button').filter( e => e.getAttribute('disabled') === 'disabled' )

ES5:

var a = document.getElementsByTagName('deb-button');
var b = [];
for (var i= 0; i < a.length; i++){
   if (a[i].getAttribute('disabled') === 'disabled') { b.push(a[i]) }
}
0 голосов
/ 03 апреля 2019

Ну, так как вы используете директиву, я предпочитаю использовать селектор следующим образом:

ссылка на функцию (scope, element, attr) {
angular.element (element.querySelectorAll ('deb-button: disabled')}

Это просто еще один способ сделать это.

...