angular 两个控制器中方法怎么互相调用?
描述:一个页面里,主页面用了一个controller1,侧边栏用了controller2,不是嵌套关系。
问题:想在操作侧边栏执行controller2中方法时再触发controller1中方法刷新主页面的列表
在2中写了 $controller('controller1',{$scope:$scope});但直接报错了,不知啥原因,还有其它好方法没。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
可以把需要
controller2
中需要调用controller1
中的方法写到service
里面去,然后再controller2
中调用service
这种情况,还是建议放在service里吧,然后controller1和controller2都调用这个方法就可以了,如果你不想这样实现,也可以直接挂在$rootScope上,或者通过$broadcast和$emit形式,实现控制器之间的通信
controller2中广播(broadcast)一个事件,在controller1中收到这个广播时调用刷新方法
主控制器里的方法在子控制器里是随便调用的 两个子控制器的话可以通过主控制器进行通讯 broadcast是向上通知 emit向下通知
把方法挂在$rootScope上
如果两个地方需要时实现的功能相同的话,可以把通用的方法写在'服务'中,'服务'即'factory'或'service',然后在需要的地方注入该服务,因为服务可以全局拿到,例如一些网络请求的服务,经常需要各个页面都要用,最好写一个服务放进去,之后用会方便很多,控制器里面的function只是写一些该界面个性的东西
如何在父级控制器上调用子级控制器的方法,比如我有个更新数据的方法子级写在子级里,在父级中怎么调用呢