2013-12-17 169 views
5

我正在嘗試使用AngularJS來查詢我的視圖的DOM。我需要獲得所有具有「數據放置」屬性的值爲「top」的元素。在jQuery中,我會這樣做:AngularJS - 通過屬性值查找元素

var elements = $('[data-placement="top"]'); 

但是,我不知道如何與AngularJS做到這一點。有人能告訴我如何做到這一點?

謝謝!

+1

AngularJS不這樣做。 jQuery這樣做。在您的應用程序中加載jQuery並且它應該可以工作 – Abilash

+2

這並非完全正確:您可以使用自定義指令來做到這一點,這將是「角度」做事的方式。你能發佈一些關於你的用例的更多信息嗎? –

+1

Angular開發的黃金法則是永遠不要觸摸控制器的DOM。所以要回答你的問題有幾個問題:你在哪裏放置這個JavaScript代碼,你打算如何處理這些元素?如果這段代碼不在自定義指令中,你可能想退後一步,考慮以另一種方式做這件事。 –

回答

4

在AngularJS中,您不會直接從控制器執行DOM操作,您應該爲此創建一個指令。您可以根據需要在指令內部使用JQuery。

無論如何,我認爲你可以使用angular.element()與JQlite選擇器,這裏的文檔angular.element

例子:

// find('#id') 
angular.element(document.querySelector('#id')) 
0

從你的問題我明白,你想找到需要的,我們可以使用$document這種情況下,某些條件atrributes元素。

你可以找到更多關於它的信息here

所以來到您的要求,你可以找到它。

$document.find("[attribute-name='attribute-value')"); 

這將返回包裝在jQuery或jqLit​​e中的元素對象。但要使用它,您需要將$document注入您的控制器。所以你繼續角度相關的操作。

另一種方法是angular.element

angular.element.find("[attribute-name='attribute-value')"); 

但是,這將返回與包裝原始DOM元素或HTML字符串作爲jQuery元素的元素。你可以找到更多關於它的信息here

我更喜歡使用$document作爲Angular操作可以使用第一種方法完成。