在AngularJS中路由时包括控制器

时间:2015-06-17 09:13:29

标签: javascript angularjs url-routing

我正在使用AngularJS构建一个相当大的单页Web应用程序,我正在尝试找到使其非常模块化的最佳方法。

我正在使用ngRoute来构建我的路线,我的app.js包含:

...
app.config(function($routeProvider, $locationProvider) {
$routeProvider
    .when('/stats', {
        templateUrl : 'views/stats.html',
        controller  : 'StatController'
    })
    ...

为了实现这一点,我需要将StatController包含在我的主index.html文件中,并包括app.js

<script src="/js/StatController.js"></script>

当我只包含1或2个控制器时似乎合理,但如果我有30个控制器怎么办?我是否仍然必须将它们全部包含在我的index.html页面中,或者Angular是否只有在需要时才包含它(即,在请求新控制器时)

1 个答案:

答案 0 :(得分:0)

如果您在当前视图中需要某些逻辑,则每个视图都附加了一个控制器。最佳做法是在小块路由文件中分离应用程序的功能。例如,您必须创建一个帐户部分。您可以创建一个accountRoute.js,其中包含您的模块,如下所示:< / p>

angular.module('myModule').config(function ($stateProvider){
.state('someName',{/*add controllers templates here*/})
})

和其他州也许。 如果您需要创建另一个未来,例如仪表板,您可以创建另一个路由文件dashboardRoute.js,您可以在其中使用相同的角度模块。这是一个很好的做法,可以构建您的代码以使其更干净。 所以在dashboardRoute.js中你将拥有:

angular.module('myModule').config(function ($stateProvider){
    .state('anotherStateName',{/*add controllers templates here for dashboard feature*/})
    })

所有路线都将注入同一模块,因此您可以访问它们。 最后但同样重要的是,您还应该有一个app.js文件,您可以在其中注入所需的所有模块依赖关系,登录路由等。  在我看来,controllers.js文件很难调试,维护和阅读。每个控制器应在不同的.js文件中分隔,并添加到index.html。 我希望它有所帮助。