2014-07-09 12 views
11

Muszę rozwiązać niektóre zależności (pobieranie danych dla moich usług itp.) W mojej aplikacji przed jej załadowaniem. Chciałbym je rozdzielić, tak, żebym miał jeden blok konfiguracji dla głównej aplikacji, a następnie jeden lub więcej bloków konfiguracyjnych dla innych części aplikacji.Wiele bloków konfiguracji w module kątowym

Ostatecznie, mam nadzieję, że uda mi się rozwiązać zależności dla głównej aplikacji, załaduję powiązane z nią komponenty, a następnie rozwiązam resztę i załaduję te części, więc jest to trochę bardziej responsywne podczas ładowania.

To co mam wymyślić tak daleko, ale to nie jest rozwiązanie zależności w pierwszym bloku config:

angular.module('myApp', ['ui.router', 'kendo.directives']) 
    .config(function($stateProvider) { 
    $stateProvider 
     .state('settings', { 
     url: '/', 
     views: { 
      'mainNav': { 
       templateUrl: 'scripts/directives/mainNav/mainNav.html', 
       controller: 'mainNavCtrl' 
      //etc 
      } 
     }, 
     resolve: { 
      fetchSettings: function(Settings) { 
      return Settings.fetch; 
      } 
     } 
     }); 
    }) 
    .config(function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/'); 

    $stateProvider 
     .state('otherPart', { 
     url: '', 
     views: { 
      'otherPart': { 
      templateUrl: 'views/otherPart.html' 
      //etc 
      } 
     }, 
     resolve: { 
      fetcherPromise: function(User, MyData) { 
      var fns = [ 
       MyData.fetch, 
       User.fetchEntitlements 
      ]; 
      return fetcher.inSerial(fns); 
      } 
     } 
     }) 
     ; 

    }); 

jestem nawet na dobrej drodze?

Odpowiedz

4

Należy przesunąć „resztę” do osobnego modułu:

angular.module('separateModule', ['ui.router', 'kendo.directives']) 
     .config(function ($stateProvider, $urlRouterProvider) { 
     $urlRouterProvider.otherwise('/'); 
     $stateProvider 
      .state('otherPart', { 
      url: '', 
      views: { 
       'otherPart': { 
       templateUrl: 'views/otherPart.html' 
       //etc 
       } 
      }, 
      resolve: { 
       fetcherPromise: function(User, MyData) { 
       var fns = [ 
        MyData.fetch, 
        User.fetchEntitlements 
       ]; 
       return fetcher.inSerial(fns); 
       } 
      } 
      }) 
      ; 

     }); 
angular.module('myApp', ['separateModule', 'ui.router', 'kendo.directives']) 
    .config(function($stateProvider) { 
    $stateProvider 
     .state('settings', { 
     url: '/', 
     views: { 
      'mainNav': { 
       templateUrl: 'scripts/directives/mainNav/mainNav.html', 
       controller: 'mainNavCtrl' 
      //etc 
      } 
     }, 
     resolve: { 
      fetchSettings: function(Settings) { 
      return Settings.fetch; 
      } 
     } 
     }); 
    }); 

Jeśli się nie mylę to nie było rozwiązywanie zależności dla pierwszego bloku, ponieważ był zastąpione drugim .config.

Oto kod dla jednej konfiguracji, jeśli trzeba, że:

angular.module('myApp', ['ui.router', 'kendo.directives']) 
.config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 
     .state('settings', { 
      url: '/', 
      views: { 
       'mainNav': { 
        templateUrl: 'scripts/directives/mainNav/mainNav.html', 
        controller: 'mainNavCtrl' 
        //etc 
       } 
      }, 
      resolve: { 
       fetchSettings: function(Settings) { 
        return Settings.fetch; 
       } 
      } 
     }) 
     .state('otherPart', { 
      url: '', 
      views: { 
       'otherPart': { 
        templateUrl: 'views/otherPart.html' 
        //etc 
       } 
      }, 
      resolve: { 
       fetcherPromise: function(User, MyData) { 
        var fns = [ 
         MyData.fetch, 
         User.fetchEntitlements 
        ]; 
        return fetcher.inSerial(fns); 
       } 
      } 
     }); 

    $urlRouterProvider.otherwise('/'); 
}); 
+0

Dzięki za odpowiedź. Od jakiegoś czasu nie pracowałem nad tym projektem, ale spróbuję obejść, aby przetestować to i przekazać informację zwrotną. – lintmouse

+20

Ta odpowiedź jest niepoprawna. Kątowe moduły pozwalają na wiele bloków konfiguracji i nie zastępują się nawzajem. Zobacz dokumentację tutaj: https://docs.angularjs.org/guide/module Więc problem musi być w czymś innym. –

+2

[Wiele dowodów konfiguracji] (https://jsfiddle.net/vp_arth/5jckotrb/) –