所以最近我开始学习angularJS,我正在开展一个SPA项目。 这是一个有几个步骤的游戏(游戏的目的对于问题而言并不重要)
目前我有一个控制器用于每个步骤,所有这些都是mainControlelr的孩子,所以在我的html中它看起来像:
<div class="container" ng-controller="mainCtrl">
<!--main container-->
<div class="row">
<!--center pane-->
<div id="centerPane" class="col-lg-8 center-block">
.
. some code...
.
<!--steps-->
<div ng-view id="form-views"></div>
.
. some code...
.
</div>
.
. some code...
.
</div>
在与我的一些朋友交谈后,所有人都告诉我这不是一个好方法,我应该做以下其中一个:
所以基本上我的问题是,根据经验,人们应该考虑在SPA中使用多个控制器吗?
谢谢,
答案 0 :(得分:0)
不,我建议反对将所有代码放在一个控制器中。这使得它很难理解,因为很多业务逻辑将在一个文件中,并且很难进行单元测试。
首先,业务逻辑应该放在服务中。将尽可能多的业务逻辑保留在控制器之外并将其放入服务或工厂中。
假设您正在使用ngRoute(我在您的代码中看到ng-view
)并且步骤是一个接一个,我建议充分利用ngRoute组件。这意味着应用程序中的每一步都应该拥有自己的路由和公司控制器。如前所述,应用于多个路由的业务逻辑应抽象为服务或工厂。
为了更清楚,下面的代码可以是每个步骤的路由配置。
.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/step-1', {
templateUrl: 'partials/step1.html',
controller: 'StepOneCtrl'
}).
when('/step-2', {
templateUrl: 'partials/step2.html',
controller: 'StepTwoCtrl'
}).
otherwise({
redirectTo: '/step-1'
});
}]);