AngularJS等效于hasAttribute()?

Bry*_*son 6 javascript angularjs

在一个指令中,我想在我执行某个函数之前检查一个元素是否有一个属性.但是我在jqLit​​e文档中没有看到任何内容.

例如:

.directive('noReadonly', function() {

    return {
      link: function($scope, $element, $attr, ctrl) {

        $element.on('focus', function() {
          if ($element.hasAttribute('readonly'))
          $element.removeAttr('readonly');
        });

      },
    }
  })
Run Code Online (Sandbox Code Playgroud)

Mik*_*son 9

$attr 是一个具有属性的对象,因此您可以像平常一样使用它:

if($attr.hasOwnProperty("readonly"))
Run Code Online (Sandbox Code Playgroud)

如评论中所述,这将检查该属性是否存在.这个元素会产生真正的反应:

<input name="test" readonly>
Run Code Online (Sandbox Code Playgroud)

如果您还要检查truthy值,可以扩展逻辑:

if($attr.hasOwnProperty("readonly") && $attr.readonly) {}
Run Code Online (Sandbox Code Playgroud)

请注意,属性值被解析为字符串,因此$attr.readonlyequals "true"(String)而不是true(Boolean).

  • 角度 2 是否有等价物? (2认同)