1

如果我爲我的角度指令定義了一個link函數,在指令內選擇特定元素的最佳方法是什麼?例如,如果這是我的模板網址:如何正確選擇指令內的元素?

<div> 
    <form> 
    <input></input> 
    </form> 
</div> 

,我想選擇input,是什麼讓我的鏈接功能的input標籤的參考的最佳方式?

我最初的想法是在input標記上放置一個id屬性並根據該標記進行選擇,但由於這是一個指令,我不一定知道它在哪裏使用,所以無論選擇哪個id都可能不唯一。

+0

使用jqlite的功能列表,我相信最好將創造該指令的屬性,並將其動態關聯到您想要的控制。這樣你就可以知道你正在處理的領域。 –

+0

@ HugoS.Mendes如果我理解正確,我不認爲這是一個好主意。這是一個不應該涉及指令用戶的內部實現細節。無論誰使用這個,都不關心正在選擇什麼內部元素或如何。 –

+0

嗯..有道理:o –

回答

4

最好的方法是使用角元素對象,它內置了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); 
    } 
    }; 
}); 

這裏是你可以用元素對象 https://docs.angularjs.org/api/ng/function/angular.element