如何正确 select 指令中的元素?
How to properly select an element inside a directive?
如果我为 angular 指令定义了一个 link
函数,那么 select 指令中特定元素的最佳方法是什么?例如,如果这是我的模板 url:
<div>
<form>
<input></input>
</form>
</div>
并且我想 select input
,在我的 link 函数中获取对 input
标记的引用的最佳方法是什么?
我最初的想法是在 input
标签上放置一个 id
属性,并以此为基础 select,但由于这是一个指令,我不一定知道它在哪里使用, 所以我选择的任何 id 都可能不是唯一的。
最好的方法是使用 angular 元素对象,它内置了 jqlite 函数,对于不唯一的元素或 jQlite 不支持的东西,你总能得到纯 DOM 并使用 querySelector ej:
app.directive("directiveName",function()
{
return{
template : "<div><span class='aclass'><button>hi</button></span></div>",
link ( scope, ele, attr){
var a = ele.find('button');
console.log(a);
var b= ele[0].querySelector('.aclass') //element[0] for the DOM
console.log(b);
}
};
});
这里是可以与元素对象一起使用的 jqlite 函数列表
https://docs.angularjs.org/api/ng/function/angular.element
如果我为 angular 指令定义了一个 link
函数,那么 select 指令中特定元素的最佳方法是什么?例如,如果这是我的模板 url:
<div>
<form>
<input></input>
</form>
</div>
并且我想 select input
,在我的 link 函数中获取对 input
标记的引用的最佳方法是什么?
我最初的想法是在 input
标签上放置一个 id
属性,并以此为基础 select,但由于这是一个指令,我不一定知道它在哪里使用, 所以我选择的任何 id 都可能不是唯一的。
最好的方法是使用 angular 元素对象,它内置了 jqlite 函数,对于不唯一的元素或 jQlite 不支持的东西,你总能得到纯 DOM 并使用 querySelector ej:
app.directive("directiveName",function()
{
return{
template : "<div><span class='aclass'><button>hi</button></span></div>",
link ( scope, ele, attr){
var a = ele.find('button');
console.log(a);
var b= ele[0].querySelector('.aclass') //element[0] for the DOM
console.log(b);
}
};
});
这里是可以与元素对象一起使用的 jqlite 函数列表 https://docs.angularjs.org/api/ng/function/angular.element