我已经写了一个带隔离范围的指令。
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='...' >
我想知道如何使用(并使指令检测它是否存在)一个没有赋值的可选属性。感谢。
答案 0 :(得分:21)
只需在链接功能中使用attrs.hasOwnProperty('noValueAttr')
来测试属性是否存在。
请勿忘记标记中的属性为no-value-attr
,而不是您展示的noValueAttr
。
link: function(scope, elem, attrs) {
if (attrs.hasOwnProperty('noValueAttr'))
// attribute is present
else
// attribute is not present
}
答案 1 :(得分:0)
我知道这是一个老问题,但有这样的方式:
link: function(scope, elem, attrs) {
scope.noValueAttr = scope.$eval(attrs.noValueAttr) || 'default value';
}