Не следует указывать для $scope.my-option
здесь, но для $scope.myOption
.
Атрибуты CamelCased только в виде змеи в HTML-коде; на них следует ссылаться с помощью camelCase во всех остальных источниках JavaScript.
Итак, ваш HTML тег должен быть как:
<my-directive my-option></my-directive>
Но ваше выражение AngularJS будет:
{{ $scope.myOption ? 'YES' : 'NO' }}
$scope
может даже не понадобиться, что бы уменьшить выражение
{{ myOption ? 'YES' : 'NO' }}
Кроме того, если вы не хотите явно добавлять проверку в качестве наблюдателя в свой HTML, вы можете использовать функцию ссылки вашей директивы для этого. documentation объясняет это более подробно.
В вашей директиве, использовать его как в следующем фрагменте кода:
angular
.module('myModule')
.directive('myDirective', function() {
return {
restrict: 'A',
scope: {
myOption: '=?'
},
link: function(scope, element) {
if (scope.myOption) {
// you have the attribute
} else {
// you don't
}
}
}
});
проверить его в ссылке функция директивы: link: function (scope, elem, attr) {} –