我有一个使用AngularJS制作的搜索网络应用程序,其中包括两个角度模块:search-keyword-input
模块和search-action
模块。
第一个search-keyword-input
模块具有建议功能,表单验证功能等。 search-action
模块的功能是请求数据并在表中显示可排序的结果。因此每个模块都有自己的控制器和指令。
问题在于:我模块化的原因是,我想要可以重复使用和解耦的模块。但是在这个应用程序中,search-keyword-input
模块中的关键字模型值必须传递到搜索操作模块(search-action
模块必须知道用于执行搜索的关键字)。那么如何在模块之间传递值呢?他们如何在没有耦合的情况下沟通?
我已经找到了添加父控制器和全局$ scope值的方法:
<div ng-controller="globalController">
<div ng-controller="keywordController"></div>
<div ng-controller="searchController"></div>
</div>
因此search-keyword
模块可以在globalController
的{{1}}上设置关键字值,$scope
控制器也可以从search-action
获取该关键字值}。但我认为这使得模块化变得毫无意义,因为它们是耦合在一起的。我还能做什么?
答案 0 :(得分:1)
最好的办法是创建一个既可以由两个控制器共享的自定义服务,也可以单独使用,而不是污染父范围。