Ui路由器到具有许多模块的系统

时间:2016-09-18 14:24:43

标签: angularjs angular-ui-router

我遇到了一个问题,一个名为OrderController的控制器站在两个模块Sales和Supply上。当我创建将使用此控制器的路由,因为我可以定义我想要使用的两个控制器中的哪一个,如何定义哪个控制器的模块?我试图在每个模块中单独注册路由,但仍然不是正确的。

完整代码:https://plnkr.co/edit/iLUuUNKWZJhg23rrk1zB?p=preview

acmeModule.js

var app = 
    angular
    .module('acme', [

        // Angular UI
        'ui.router',

        // Acme modules
        'acme.sales',
        'acme.supply',
    ]);

app.config(config);

config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise("/home");

    $stateProvider
        .state("home", {
            url: "/home",
            template: "Home"
        })
}  

salesModule.js

var app = 
    angular
    .module('acme.sales', ['ui.router']);

app.config(config);

config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider) {

    $stateProvider
        .state("orderBySales", {
            url: "/orderBySales",
            templateUrl: "content.html",
            controller: 'OrderController',
            controllerAs: 'vm'
        });
}

app.controller('OrderController', OrderController);

function OrderController() {
    var vm = this;
    vm.Content = "Order by Sales";
}

supplyModule.js

var app = 
    angular
    .module('acme.supply', ['ui.router']);

app.config(config);

config.$inject = ['$stateProvider', '$urlRouterProvider'];
function config($stateProvider, $urlRouterProvider) {

    $stateProvider
        .state("orderBySupply", {
            url: "/orderBySupply",
            templateUrl: "content.html",
            controller: 'OrderController',
            controllerAs: 'vm'
        });
}

app.controller('OrderController', OrderController);

function OrderController() {
    var vm = this;
    vm.Content = "Order by Supply";
}

1 个答案:

答案 0 :(得分:0)

您必须以不同方式命名控制器,否则一个控制器会覆盖另一个控制器。在这个星座(plunker)中,它是模块acme.supply的控制器。

将其称为SupplyOrderControllerSalesOrderController