请问AngularJS
的controller
之间是如何传递数据(通信)的?
现在有一个需求:页面有一个搜索框和按钮,搜索框和按钮属于一个controller
。搜索框和按钮下面是一个列表,此列表是一个controller
。。
在搜索框中输入内容,点击按钮,使用$http
服务从后台拿到数据之后,如何把数据传递给列表的controller
然后更新列表视图?
如果,我用一个大controller
包裹者搜索框、按钮、列表,然后列表还是一个controller
,也就是说controller
之间进行了嵌套,请问这种情况下如何把外层controller
通过$http
服务拿到的数据传递给内层controller
呢?
请分别回答两个问题,因为两种情况在项目中都会用到,谢谢!
也可以使用服务来传值。
如果是第二种情况很好办啊,列表的controller不是继承大controller的么?直接取就行了。
如果是分开的controller,就有点麻烦,可以考虑通过事件发送:发送到双方共同的父作用域上;或者用一个全局的事件发送。
参考https://github.com/xufei/blog/issues/18
对于第一个问题,可以使用
$broadcast 或者 $emit
进行 controller 间通信。
第二个问题,controller 是父子关系的时候,对应的 scope 具有原型链关系。