如何从包裹在自定义指令中的 ui-grid 中的按钮调用周围控制器中的方法?
How to call a method in surrounding controller from button in ui-grid wrapped in custom directive?
[tldr] 当网格包含在自定义指令中时,如何使列模板中的按钮从围绕网格的控制器调用方法? [再见]
为了解释,这里有 3 个笨蛋:
P1) ui-grid
中的基本操作栏
P2) 相同但控制器与 vm
P3) 在我的网格中包装 ui-网格(操作按钮不再起作用)
在我的应用程序中事情更复杂,我确实设法让自定义列中的按钮调用 my-grid 控制器上的一个方法(通过 grid.appScope.vm.FunctionName
;在上面的 P3 中 my-grid 没有甚至有一个控制器,这是一个简化的例子),但我想我可能在错误的方向上挖掘得太深,所以......
怎么让P3中grid列的按钮调用MainCtrl::Test方法?
经过 swalter 的一些帮助(通过 ui-grid glitter chat),我想我有一个不错的答案。
As documented ui-grid (3.x) 使用隔离作用域,但允许您的模板通过 $scope.grid.appScope
.
到达外部作用域
我没有意识到的是,当您设置网格选项时,您可以通过设置 appScopeProvider
选项来覆盖 grid.appScope 将 return 的内容,并且这可以轻松设置为您在构建网格时可能方便的范围。
因此,对于我以前的 plunkrs 中的场景,这里有一个解决方案,只需将 appScopeProvider: $scope
添加到网格选项
http://plnkr.co/edit/0THPYZXPmqhfWYGo2ebE
[tldr] 当网格包含在自定义指令中时,如何使列模板中的按钮从围绕网格的控制器调用方法? [再见]
为了解释,这里有 3 个笨蛋:
P1) ui-grid
中的基本操作栏P2) 相同但控制器与 vm
P3) 在我的网格中包装 ui-网格(操作按钮不再起作用)
在我的应用程序中事情更复杂,我确实设法让自定义列中的按钮调用 my-grid 控制器上的一个方法(通过 grid.appScope.vm.FunctionName
;在上面的 P3 中 my-grid 没有甚至有一个控制器,这是一个简化的例子),但我想我可能在错误的方向上挖掘得太深,所以......
怎么让P3中grid列的按钮调用MainCtrl::Test方法?
经过 swalter 的一些帮助(通过 ui-grid glitter chat),我想我有一个不错的答案。
As documented ui-grid (3.x) 使用隔离作用域,但允许您的模板通过 $scope.grid.appScope
.
我没有意识到的是,当您设置网格选项时,您可以通过设置 appScopeProvider
选项来覆盖 grid.appScope 将 return 的内容,并且这可以轻松设置为您在构建网格时可能方便的范围。
因此,对于我以前的 plunkrs 中的场景,这里有一个解决方案,只需将 appScopeProvider: $scope
添加到网格选项
http://plnkr.co/edit/0THPYZXPmqhfWYGo2ebE