【发布时间】:2015-08-18 01:22:12
【问题描述】:
我有一个使用 AngularJS 制作的搜索网络应用,其中包括两个 Angular 模块: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 的$scope 上设置关键字值,search-action 控制器也可以从globalController 中获取该关键字值。但我认为这使得模块化变得毫无意义,因为它们是耦合在一起的。我还能做什么?
【问题讨论】:
-
这些是不是已经耦合了,仅仅因为一个依赖于另一个这一事实?
search模块是否已经有某种方法可以在没有keyword的情况下进行搜索?
标签: javascript angularjs modularity decoupling