解耦Angular模块

时间:2015-08-18 01:22:13

标签: javascript angularjs modularity decoupling

我有一个使用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获取该关键字值}。但我认为这使得模块化变得毫无意义,因为它们是耦合在一起的。我还能做什么?

1 个答案:

答案 0 :(得分:1)

最好的办法是创建一个既可以由两个控制器共享的自定义服务,也可以单独使用,而不是污染父范围。