我有一个Angular应用程序。它工作得很好,但随着我的应用程序变得越来越大,我担心必须在每个控制器中注入大量的依赖项。
例如
app.controller('viewapps',[
'$scope','Appfactory','Menu','$timeout','filterFilter','Notice', '$routeParams',
function($scope,Appfactory,Menu,$timeout,filterFilter,Notice,$routeParams) {
//controller code..
}])
我确信依赖项的列表在未来会增加。我是不是做错了什么?这是正确的方法吗?有效处理此问题的最佳方法是什么?
发布于 2014-09-02 22:33:05
我一直在尝试基于控制器捆绑服务的想法。
因此,在您的示例中,您可以将您的;AppFactory、菜单、filterFilter和通知服务重构为一个服务,例如ViewAppsServices。
然后,您将使用ViewAppsServices.AppFactory.yourFunction()等服务。
在我看来,你至少可以把你的注入转移到另一个文件中,清理一下你的控制器。
我认为可读性会受到一些影响,因为另一个开发人员将不得不查看捆绑包而不是控制器本身。
这是我放在一起演示它如何工作的JSFiddle;这就是我所设想的工作方式。
.service('ViewAppsServices', ['AppFactory', 'Menu', 'filterFilter', 'Notice',
function (AppFactory, Menu, filterFilter, Notice) {
return {
AppFactory: AppFactory,
Menu: Menu,
filterFilter: filterFilter,
Notice: Notice
};
} ])
发布于 2014-04-30 15:36:44
尝试将尽可能多的逻辑转移到服务,甚至只是让控制器方法充当“路由传递”方法。过一段时间,如果你想在其他控制器/指令中使用类似的方法,你会发现它非常有用。无论如何,7次注射在我看来并不多:)
(编辑:参见下面Matt的评论)另外,一个小贴士-在新版本的Angular中,你不必编写这个数组,只需:
app.controller('viewapps', function($scope,Appfactory,Menu, $timeout,filterFilter,Notice,$routeParams){
//controller code..
}])
https://stackoverflow.com/questions/23382109
复制相似问题