AngularJS等效于hasAttribute()?

时间:2015-05-15 18:44:13

标签: javascript angularjs

在一个指令中,我想在我执行某个函数之前检查一个元素是否有一个属性。但我在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');
        });

      },
    }
  })

2 个答案:

答案 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.
}