2015-10-13 47 views
3

比方說,我有一個directive,其中包含「contextMenuId」的傳入attributeAngular:獲取編譯元素的範圍

在這個指令我現在執行:

contextMenu = $('[id*="' + iAttrs.contextMenuId+'"]'); 

或...

contextMenu = angular.element(document.querySelector('[id*="' + iAttrs.contextMenuId+'"]')) 

如果這些不這樣做同樣的事情,我會喜歡它,如果有人可以告訴我差異,但這與我的答案是分開的。

現在,讓我們看看我們的contextMenu

<ul id="exampleContextMenu" context-menu-defs="contextMenuDefs" ></ul> 

我想從我前面提到的指令訪問數組contextMenuDefs,然而,這是從一個完全不同的scope,我沒有進入。

我能以某種方式訪問​​scopecontextMenu是從我的指令中編譯的嗎?謝謝!

+0

是的,可以。你可以在你有contextMenu的地方添加你的指令代碼嗎? – dfsq

+0

爲什麼在角度指令中使用'$'?使用傳遞給'link'的第二個參數。請參閱https://docs.angularjs.org/guide/directive – tcooc

+0

@tcooc「link」的第二個參數?你的意思是'元素'?是的,這是一個基於jQuery的句柄來調用你的指令的DOM元素。我不能用它來調用另一個元素。我可以使用'angular.element(document.querySelector('[id * =''+ iAttrs.contextMenuId +'「]'))',但我認爲我會走出一條腿並使用jQuery一次。我剛纔建議的'角度'方式應該有更好的表現。我決定更新我的答案,以這種「有角度的方式」。 – WebWanderer

回答

2

您可以使用範圍得到其他元素:

angular.element("<selector as jquery>")).scope(); 

在您的情況:

var scopeOuther = angular.element('[id*="' + iAttrs.contextMenuId+'"]')).scope(); 
+0

沒辦法!那正是我想要的!讓我試試這個。我太激動了! – WebWanderer

+0

它的工作原理。謝謝你,先生。 – WebWanderer