2015-10-13 3 views
3

Предположим, у меня есть directive с входящим attribute из "contextMenuId."Угловой: получение области, в которой элемент был скомпилирован с

В этой директиве я теперь выполнять:

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

или ...

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

Если они не делают то же самое, я бы рад, если кто-то может сказать мне о разница, но это отдельно от моего ответа.

Теперь давайте посмотрим на наш contextMenu:

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

Я хотел бы получить доступ к массиву contextMenuDefs из директивы я уже упоминал ранее, но это с совершенно иной scope, что у меня нет доступ к.

Можно ли каким-либо образом получить доступ к scope, что contextMenu был скомпилирован с моей директивой? Благодаря!

+0

Да, вы можете. Можете ли вы добавить код своей директивы, где у вас есть contextMenu? – dfsq

+0

Почему вы используете '' 'из угловой директивы? Используйте второй аргумент, переданный в 'link'. См. Https://docs.angularjs.org/guide/directive – tcooc

+0

@tcooc Второй аргумент 'link'? Вы имеете в виду 'element'? Да, это дескриптор на основе jQuery для элемента DOM, который вызвал вашу директиву. Я не могу использовать это для вызова другого элемента. Вместо этого я мог бы использовать 'angleular.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