如何从inside指令设置最接近的表单名称

时间:2014-04-30 17:04:02

标签: angularjs angularjs-directive

我想在我的指令中设置表单的名称。但是因为我收到错误而无法这样做TypeError:undefined不是一个函数。你能帮我解决这个问题吗?

以下是fiddle

HTML:

<div>
  <form>
  <input type="text" value="my value" my-element/>
</form>
</div>

指令:

var myApp = angular.module('myApp',[]);

myApp.directive('myElement', function() {
return{
    restrict:'A',
    compile:function(element, attrs)
    {
        console.log("Hello Element");
        console.log(element.closest("form").attr("name"));
    }
}
});

1 个答案:

答案 0 :(得分:3)

element不是jQuery元素,因此您无法在其上调用jQuery方法。幸运的是,有一种更简单的方法:

var myApp = angular.module('myApp',[]);

myApp.directive('myElement', function() {
    return{
        restrict:'A',
        compile:function(element, attrs)
        {
            console.log("Hello Element");
            console.log(element[0].form);
        }
    }
});

每个HTMLElementObject都有一个form属性,指向封装形式。

JSFiddle(请注意,您需要将ng-app="myApp"添加到父div元素。