【问题标题】:Decouple Angular modules解耦 Angular 模块
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多