2016-03-21 16 views
1

ayrı dosyalar halinde bölünmüş zaman benim denetleyicileri bulamıyorum: Hala ayrı dosyalar halinde benim denetleyicileri bölmek mümkün değilim Ancak How to create separate AngularJS controller files?Eğik Burada da benzer bir soru için yayınlanmıştır cevabı takip ediyordu

. Tek bir denetleyiciyi geri kalanından kendi dosyasına ayırmakla başladım, ancak şimdi denetleyicilerin hiçbiri yüklenmiyor.

Denetleyiciler dosyalarımdan önce gelen js dosyalarım, benim app.set ile benim index.html dosyasında düzgün sırada yükleniyor.

<script src="libraries/jquery/1.11.3/jquery-1.11.3.min.js"></script> 
    <script src="libraries/angular/1.4.8/angular.min.js"></script> 
    <script src="libraries/angular-ui-router/0.2.14/angular-ui-router.min.js"></script> 
    <script src="libraries/angular-scroll/angular-scroll.min.js"></script> 
    <script src="libraries/uiboostrap/0.14.3/ui-bootstrap-tpls-0.14.3.min.js"></script> 
    <script src="libraries/dirPagination/dirPagination.js"></script> 
    <script src="libraries/angular-loading-bar/loading-bar.js"></script> 
    <script src="js/app.js"></script> 
    <script src="js/app.services.js"></script> 
    <script src="js/app.controllers.js"></script> 
    <script src="partials/events/StageBarCtrl.js"></script> 

Benim app.js dosyası:

angular.module('myWebApp.controllers',[]). 
    controller('TopNavCtrl', function ($scope, $location) { 

    }). 

    controller('scrollCtrl', function($scope, $document) { 

    }). 

    controller('AdminTableCtrl', function ($scope, coreAPIservice) { 

    }). 

    controller('EditDivisionsCtrl', function ($scope, coreAPIservice) { 

    }). 


    controller('EditDepartmentsCtrl', function ($scope, coreAPIservice) { 

    }). 

    controller('EditTeamsCtrl', function ($scope, coreAPIservice) { 

    }). 

    controller('HomePageCtrl', function ($scope, $location, $http) { 

    }). 

    controller('EventCtrl', function ($scope, $window, $location, $http, coreAPIservice) { 

    }). 

    controller('UserProfilesCtrl', function ($scope, $location, $http, coreAPIservice) { 

    }). 

    controller('TeamProfilesCtrl', function ($scope, $location, $http) { 

    }). 

    controller('DepartmentProfilesCtrl', function ($scope, $location, $http) { 

    }). 

    controller('DivisionProfilesCtrl', function ($scope, $location, $http) { 

    }). 

    controller('NotFoundCtrl', function ($scope, $location, $http) { 

    }); 

Ondan ayrıldıktan kontrolör:

var app = angular.module('myWebApp', [ 
    'myWebApp.services', 
    'myWebApp.controllers', 
    'ui.router', 
    'duScroll', 
    'ui.bootstrap', 
    'angularUtils.directives.dirPagination', 
    'angular-loading-bar' 
]); 

app.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/404'); 

    $stateProvider 
     .state('home', { 
      url: '/', 
      templateUrl: 'partials/home.html', 
      controller: 'HomePageCtrl' 
     }) 
     .state('event', { 
      url: '#/events/event', 
      views: { 
       '': { 
        templateUrl: 'partials/events/event.html', 
        controller: 'EventCtrl' 
       }, 
       '[email protected]' : { 
        templateUrl: 'partials/events/stage-bar.html', 
        controller: 'StageBarCtrl' 
       } 
      } 
     }) 
     .state('userProfiles', { 
      url: '/admin/users', 
      templateUrl: 'partials/admin/user-profiles.html', 
      controller: 'UserProfilesCtrl' 
     }) 
     .state('editTeams', { 
      url: '/admin/teams', 
      templateUrl: 'partials/admin/edit-teams.html', 
      controller: 'TeamProfilesCtrl' 
     }) 
     .state('editDepartments', { 
      url: '/admin/departments', 
      templateUrl: 'partials/admin/edit-departments.html', 
      controller: 'DepartmentProfilesCtrl' 
     }) 
     .state('editDivisions', { 
      url: '/admin/divisions', 
      templateUrl: 'partials/admin/edit-divisions.html', 
      controller: 'DivisionProfilesCtrl' 
     }); 
}]); 

Benim asıl kontrolör dosya app.controllers.js bu (kısalık için elided içindekiler) benziyor kendi dosya içine bu gibi görünüyor:

angular.module('myWebApp.controllers', []). 
    controller('StageBarCtrl', function($scope, $window, $location, $http, eventFactory) { 

    }); 

Aldığım hata: "Argüman 'TopNavCtrl' bir işlev değil, undefined", index.html içinde karşılaşılan ilk denetleyicidir. ikinci parametre (alıcı) olarak [] olmadan

angular.module('myWebApp.controllers'). 
controller('StageBarCtrl', function($scope, $window, $location, $http, eventFactory) { 
    // ... 
}); 

Not, angular.module('myWebApp.controllers'): Eğer ayrı dosyalarda denetleyicileri tanımlarken

cevap

3

Eğer bu notasyonu kullanmak gerekir. Daha önce kaydedilmiş myWebApp.controllers modülünü almak anlamına gelir. Ancak, angular.module('myWebApp.controllers', []) (ayarlayıcı), daha önce kaydedilmiş olan herhangi bir şeyin üzerine yazan "myWebApp.controllers modülünü oluştur" anlamına gelir.

+0

Evet, 5 saniye boyunca beni yenersiniz, angular.module işlevi bir modül tanımlarken bir setter ([] ile) veya modül tanımlarını ([] olmadan) alırken bir alıcı olabilir. – slackmart

1

Çok yakınsınız.

Ayrılan denetleyici dosyalarınızda, her zaman "[]" ikinci argüman olarak ekleyerek, üstte myWebApp.controllers modülünün üzerine yazıyorsunuz demektir. Bu sadece son ayrılan kontrol cihazınızın enjekte edilmesiyle sonuçlanır. Böylece senin durumunda "Argument 'TopNavCtrl' is not a function, got undefined" hata

Sen ayarlayıcı kullanarak olmalıdır ...

angular.module sadece bir kez app.controllers.js içinde ('myWebApp.controllers', [])

, . Ve alıcı ...

angular.module ('myWebApp.controllers') her bir ayrılmış kontrol cihazı için

.

İlgili konular