我有一个以前是基于服务器的应用程序的MEAN Stack应用程序,现在我试图将其转换为单页应用程序。SPA的应用程序结构 - AngularJS
我目前的结构:
- 我有一个加载主视图中index.ejs文件,它包含了
ng-view
标签。 - index.ejs文件有一个包含5个项目的菜单。每个项目在ng-view中加载一个新视图。
- 每个菜单项加载一个新视图,每个菜单项都有自己的控制器。
我的问题:
目前我所有的功能是单个控制器下,因此当我使用ngRoute它看起来像这样:
myCtrl.config(function($routeProvider) {
$routeProvider
// route for the home page
.when('/', {
templateUrl: '/test.ejs',
controller: 'myCtrl1',
})
// route for the about page
.when('/proposals', {
templateUrl: '/profile.ejs',
controller: 'myCtrl1'
})
// route for the contact page
.when('/bios', {
templateUrl : '/test2.ejs',
controller : 'myCtrl1'
});
});
这是导致我的控制文件来了很多的代码。我想根据他们的功能来划分它们。所以每个视图都应该有自己的控制器。
我的问题:
- 请告诉我这种类型的情况下正确应用结构。
我怎样才能把外部控制器到ngRoute像这样:
myApp.controller('myCtrl1',function($scope){}); .when('/', { templateUrl: '/test.ejs', controller: 'myCtrl1', // INTERNAL CONTROLLER }) .when('/proposals', { templateUrl: '/profile.ejs', controller: '/directory2/js/myCtrl2' //EXTERNAL CONTROLLER })
我不知道什么是正确的做法在这里。我想让我的应用程序模块化,并分离关注。
我认为你应该有一个最抽象的''MainCtrl',它是在'div'上定义的'ng-view'或'body'标签,每个视图都有自己独立的控制器。 – notgiorgi
@notgiorgi你能举个例子吗? – Skywalker
好的,我会将它作为答案发布。 – notgiorgi