在隔离范围和父范围之间传递数据

时间:2015-03-16 10:44:59

标签: javascript angularjs angularjs-directive angularjs-scope

我有一个应该具有隔离范围的指令,以及一个父指令,如下所示:

-----------------------------------------------
|        parent directive                     |
|  ----------------------------------------   |
|  |                                      |   |
|  |    menu directive(isolate scope)     |   |
|  |                                      |   |
|  ----------------------------------------   |
|                                             |
-----------------------------------------------

我想知道将数据从菜单传递到父指令的最佳方法是什么。例如,如果用户点击菜单项,我想将该项(以及其他数据)传递给父指令,以便它有机会处理该动作。

我认为这种处理不应该与菜单指令耦合,因为它的主要目的是显示项目并在其他上下文中可重用。那么,从隔离范围传递数据的最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

  • 向指令添加函数属性("&")并从内部指令代码执行它。父指令代码可以从函数的事件参数中获取数据。
  • 从内部指令发出一个事件,并在父指令中监听它。
  • 浏览$ rootScope(通常不推荐)

"最佳方式"这取决于您的具体用例以及您希望放置耦合的位置。

答案 1 :(得分:0)

使用“=”而不是“&”在将数据从父级传递到子级范围时,您将获得范围从父级到子级和子级到父级的更改。