Javascript 角度:获取元素编译时使用的范围
假设我有一个Javascript 角度:获取元素编译时使用的范围,javascript,angularjs,Javascript,Angularjs,假设我有一个指令,带有传入的属性“contextMenuId” 在本指令中,我现在执行: contextMenu = $('[id*="' + iAttrs.contextMenuId+'"]'); 或者 如果这些都不一样,我希望有人能告诉我区别,但这与我的答案是分开的 现在,让我们看看我们的上下文菜单: <ul id="exampleContextMenu" context-menu-defs="contextMenuDefs" ></ul> 我想从我前面提到的
指令
,带有传入的属性
“contextMenuId”
在本指令中,我现在执行:
contextMenu = $('[id*="' + iAttrs.contextMenuId+'"]');
或者
如果这些都不一样,我希望有人能告诉我区别,但这与我的答案是分开的
现在,让我们看看我们的上下文菜单
:
<ul id="exampleContextMenu" context-menu-defs="contextMenuDefs" ></ul>
我想从我前面提到的指令中访问数组contextMenuDefs
,但这是一个完全不同的范围,我无权访问它
我是否可以在指令中以某种方式访问编译contextMenu
时使用的范围
?谢谢 可用于获取范围其他元素:
angular.element("<selector as jquery>")).scope();
是的,你可以。你能在你有contextMenu的地方添加你的指令代码吗?为什么你要在angular指令中使用$
?使用传递到链接中的第二个参数。参见@tcooc链接的第二个参数?你是说元素?是的,这是调用指令的DOM元素的基于jQuery的句柄。我不能用它来调用另一个元素。我可以改为使用angular.element(document.querySelector('[id*=“'+iAttrs.contextMenuId+'']'))
,但我想我会冒险使用jQuery一次。我刚才建议的angular
方式应该有更好的性能。我已经决定更新我的答案,以这种“角度的方式”。@dfsq这两个指令非常复杂和庞大,我只被允许发布关于我们的代码如何工作的这么多信息(更多的信息可能会给我带来麻烦)。我曾想过制作一个JSFIDLE,但是创建这两个的工作示例需要花费大量时间,而这是我没有的。我已经提供了足够的代码,可以在我希望答案执行的范围内接收答案。我假设有一个基于角度的
查找,我可以在我提供的示例中的上下文菜单
句柄上执行,这就是我要寻找的答案。你看,如果你的问题很清楚,我不会问细节,只是马上回答。但是您没有发布最重要的部分:contextMenuDefs
来自何处以及您的指令如何绑定/处理数据。但是,由于您不能提供更多详细信息,我只能回答“我可以从指令中以某种方式访问contextMenu编译时使用的作用域吗?”-是的,这是完全可能的。不可能!这正是我想要的!让我试试这个。我太激动了!
angular.element("<selector as jquery>")).scope();
var scopeOuther = angular.element('[id*="' + iAttrs.contextMenuId+'"]')).scope();