Атрибут без значения в директиве AngularJS

Я написал директиву с изолировать область.

app.directive('myDirective', function() {
    return {
        restrict: 'E',
        scope {
            attr1: '@',
            attr2: '@',
            noValueAttr: // what to put here?
        },
        link: function(scope, elem, attrs) {
            // how to check here if noValueAttr is present in mark-up?
        }
    };
});

html может быть

<my-directive attr1='...' attr='...' ... no-value-attr>

или

<my-directive attr1='...' attr='...' >

мне интересно, как использовать (и директива обнаруживает, есть ли она или нет) необязательный атрибут, который не имеет назначенного значения. Спасибо.

2 ответов


просто использовать attrs.hasOwnProperty('noValueAttr') в функции link, чтобы проверить, присутствует ли атрибут или нет.

Не забывайте, что атрибут в разметке будет no-value-attr, а не noValueAttr как вы показали.

 link: function(scope, elem, attrs) {
           if (attrs.hasOwnProperty('noValueAttr'))
              // attribute is present
           else 
              // attribute is not present

    }

Я знаю, это старый вопрос, но есть такой способ:

link: function(scope, elem, attrs) {
  scope.noValueAttr = scope.$eval(attrs.noValueAttr) || 'default value';
}