在一个指令中,我想在我执行某个函数之前检查一个元素是否有一个属性。但我在jqLite docs中看不到任何相关内容。
e.g。 :
.directive('noReadonly', function() {
return {
link: function($scope, $element, $attr, ctrl) {
$element.on('focus', function() {
if ($element.hasAttribute('readonly'))
$element.removeAttr('readonly');
});
},
}
})
答案 0 :(得分:9)
$attr
是一个具有属性的对象,因此您可以像平常一样使用它:
if($attr.hasOwnProperty("readonly"))
如评论中所述,这将检查该属性是否存在。这个元素会产生真正的反应:
<input name="test" readonly>
如果您还要检查truthy值,可以扩展逻辑:
if($attr.hasOwnProperty("readonly") && $attr.readonly) {}
请注意,属性值被解析为字符串,因此$attr.readonly
等于"true"
(字符串)而不是true
(布尔值)。
答案 1 :(得分:1)
if ($attr.readonly) {
...
}
else {
//doesn't have it.
}