2013-08-29 58 views
3

我在app.js如下:如何在角JS控制器添加到模塊

var app = angular.module('app', ['admin', 'ui.compat', 'ngResource', 'LocalStorageModule']); 
app.config(['$stateProvider', '$locationProvider', 
    function ($stateProvider, $locationProvider) { 
     $locationProvider.html5Mode(true); 
     var home = { 
      name: 'home', 
      url: '/home', 
      views: { 
       'nav-sub': { 
        templateUrl: '/Content/app/home/partials/nav-sub.html', 
       } 
      } 
     }; 
     $stateProvider.state(home) 
    }]) 
    .run(['$rootScope', '$state', '$stateParams', function ($rootScope, $state, $stateParams) { 
     $rootScope.$state = $state; 
     $rootScope.$stateParams = $stateParams; 
     $state.transitionTo('home'); 
    }]); 
在admin.js

angular 
    .module('admin', ['ui.state']) 
    .config(['$stateProvider', '$locationProvider', 
    function ($stateProvider, $locationProvider) { 
     $locationProvider.html5Mode(true); 
     var admin = { 
      name: 'admin', 
      url: '/admin', 
      views: { 
       'nav-sub': { 
        templateUrl: '/Content/app/admin/partials/nav-sub.html', 
       } 
      } 
     }; 
     var adminContent = { 
      name: 'admin.content', 
      parent: admin, 
      url: '/content', views: { 
       '[email protected]': { 
        templateUrl: '/Content/app/admin/partials/content.html', 
        controller: 'AdminContentController' 
       } 
      } 
     } 
     $stateProvider.state(admin).state(adminContent) 
    }]) 

我感到困惑如何連線我的AdminContentController。目前我有以下幾種:

app.controller('AdminContentController', 
    ['$scope', 'entityService', 'gridService', 'gridSelectService', 'localStorageService', 
    function ($scope, entityService, gridService, gridSelectService, localStorageService) { 
     $scope.entityType = 'Content'; 

有人可以驗證這是否是我設置模塊並將其添加到應用程序的正確方法。我應該將控制器添加到應用程序:

app.controller('AdminContentController', 

或者應該屬於模塊'admin'。如果它應該那麼我應該如何連接它?

回答

5

根據你已經分享的控制器應管理模塊上創建如

var adminModule=angular.module('admin'); // This syntax get the module 
adminModule.controller('AdminContentController', 
    ['$scope', 'entityService', 'gridService', 'gridSelectService', 'localStorageService', 
    function ($scope, entityService, gridService, gridSelectService, localStorageService) { 
     $scope.entityType = 'Content'; 

你也可以在你的管理模塊聲明的延續定義控制器。

+0

非常感謝。我有7-8個控制器,所以最好在自己的文件中定義每個控制器。 – Alan2

+0

然後你必須像我所做的那樣聲明模塊變量。 – Chandermani

+0

對不起,我遲到了。在每個控制器文件的開始處使用angular.module('admin').controller('AdminContentController')是否可行?我問這個問題的原因是我不確定哪個控制器文件會先被調用,如果我按照你的建議做,那麼我會不會有7-8個「var adminModule」的多重定義,每個文件中有一個。 – Alan2

5

是的,這將工作angular.module('admin')作爲一個getter。所以你會在每個文件中得到相同的模塊。