2015-10-20 36 views
1

我正在開發使用AngularJS與uiRouter的Web應用程序。我開發我的路由配置如下:獨立的公共部分爲公共控制器

(function() { 

    'use strict'; 

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

    function Config($urlRouterProvider, $stateProvider) { 
     $urlRouterProvider.otherwise('/'); 

     $stateProvider.state('Home', { 
      url: '/', 
      templateUrl: 'Partials/homeview.html', 
      controller: 'homeCtrl' 
     }).state('Table', { 
      url: '/tableview', 
      templateUrl: 'Partials/tableview.html', 
      controller: 'tableCtrl' 
     }).state('List', { 
      url: '/listview', 
      templateUrl: 'Partials/listview.html', 
      controller: 'listCtrl' 
     }).state('New', { 
      url: '/new', 
      templateUrl: 'Partials/new.html', 
      controller: 'newCtrl' 
     }).state('Edit', { 
      url: '/edit/:index', 
      templateUrl: 'Partials/edit.html', 
      controller: 'editCtrl' 
     }); 
    } 
    Config.$inject = ["$urlRouterProvider", "$stateProvider"]; 

    module.config(Config); 
}()); 

在一些控制器傳遞到代碼被複制視圖中的事情,所以我想知道是否有通過2個控制器到視圖在同一方式或者是否有辦法與複製控制器的特定部分創建單獨的文件,並將其作爲所需控制器中的依賴注入傳遞。

+1

您可以使用角度服務/工廠 –

回答

1

你不能有兩個控制器連接到uiRouter路線。但是,您當然可以製作包含您的通用功能的服務或工廠。 (有關更多研究,請參閱angular.service vs angular.factory)。

var app = angular.module('app',[]) 
app.service('myFunctions',function() { 
    this.addNumbers = function(a,b) { 
    // calculate some stuff 
    return a+b; 
    } 
} 
app.controller('myController',function(myFunctions){ 
    myFunctions.addNumbers(2,2); // 4 
})