【发布时间】:2013-08-07 17:42:43
【问题描述】:
我有一个带有搜索框和结果列表的简单应用。搜索框有自己的控制器SearchCtrl,结果列表还有另一个DocListCtrl。当用户提交并且DocListCtrl 监听并更新结果时,SearchCtrl 会发出一个事件。如果用户输入查询并提交,它工作正常 - 但是,我的问题是当用户复制/粘贴 URL 时,例如“/app/search?q=foo”,搜索事件在之前广播DocListCtrl 已准备就绪,因此不会更新结果。
所以一般来说,有没有办法让一个控制器声明对另一个控制器的依赖?我应该让SearchCtrl 将数据保存在DocListCtrl 最终加载时可以查看的位置吗?
【问题讨论】:
-
嗨@porfuse。您为此使用2个控制器的任何原因?你不能用一个控制器完成吗?
-
@vin 搜索 ctrl 是独立的,因为它将持续存在于应用程序的其他区域,例如“详细信息”视图也将具有搜索表单。此外,搜索 ctrl 仅处理解析查询和从服务器获取数据,DocListCtrl 处理分页和其他一些事情
-
你还需要广播活动吗?听起来 DocListCtrl 是 SearchCtrl 的子对象,你不能获取父范围并查找它吗?
-
@Neil 如何将一个控制器声明为另一个控制器的子级?
-
引用已经回答的人 - 默认情况下,子作用域原型继承自父作用域,因此您已经可以访问子作用域中的父控制器属性。
标签: javascript angularjs dependency-injection publish-subscribe