如何通过两个路由运行两个控制器?

时间:2017-05-18 05:57:43

标签: javascript html angularjs

我有两个模块,其中有两条路线:

angular
  .module('lang', ['ngRoute'])
  .config('lang', ['$routeProvider', config])
  .controller('lang', lang);

function config(route){
  route.when('/:lang/:page', {
    template    : '',
    controller  : lang
  })
}

和指南模块的路线:

angular
  .module('guide', ['ngRoute'])
  .config('guide', ['$routeProvider', config])
  .controller('guide', guide);

function config(route){
  route.when('/:lang/guide', {
    template    : '/view/guide.html',
    controller  : guide
  })
}

但是第二个控制器没有运行。如何使用两条路径运行两个控制器?

1 个答案:

答案 0 :(得分:0)

ng-route用于SPA应用程序。

  

如果您想导航到应用程序中的不同页面,但您还希望应用程序成为SPA(单页应用程序),而不重新加载页面,则可以使用ngRoute模块。

因此,您需要定义主模块,在那里配置路由并注入依赖项。例如:

var app = angular.module('app',['ngRoute', 'firstModule', 'secondModule']);
var configFunction = function($routeProvider){
$routeProvider
 .when('/:lang/:page', {
  templateUrl: '/view/guide.html',
  controller : 'FirstCtrl'
})    
 .when('/:lang/guide', {
  templateUrl: '/view/guide2.html',
  controller: 'SecondCtrl'
})
configFunction.$inject = ['$routeProvider'];

app.config(configFunction);

app.config(['$locationProvider',
    function ($locationProvider) {
        $locationProvider.hashPrefix('');       
    }]);

这是你的注射控制器:

var app = angular.module('firstModule', []);
app.controller('FirstCtrl',function(){});

var app = angular.module('secondModule', []);
app.controller('SecondCtrl',function(){});

请注意语法。检查您使用的Angular版本的语法。