2016-11-17 8 views
0

角型プロバイダーを使用しようとしていますので、角型アプリケーションの$ routeProvider内にサブモジュールを動的にロードできます。しかし、私は2つのいずれかのエラーが取得しています:プロバイダーをロードできません

Error: [$injector:modulerr] Failed to instantiate module MainApp due to: [$injector:unpr] Unknown provider: MyRouteProvider

Error: [$injector:nomod] Module 'MainApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

はここに私が持っているものです。

main.js

require.config({ 
    baseUrl : '', 
    version : '1.0', 
}); 

require([ 
    'app', 
    'my-route-mod/my-route-mod.module', 
    'my-route-mod/my-route-mod.provider', 
    'main-app/main-app.config', 
    'main-app/main-app.run', 
    /* other initial modules */ 
],function(){ 
    angular.bootstrap(document,['MainApp']); 
}); 

app.js

(function(){ 
    'use strict'; 
    /* global angular, $ */ 

    angular.module('MainApp',[ 
     'MyRouteMod', /* This module does not want to load */ 
     'ngRoute', 
     'ngCookies' 
    ]); 
})(); 

私のルート-MOD /私のルート-mod.module.js

(function(){ 
    'use strict'; 
    /* global angular */ 

    angular.module('MyRouteMod',[]); 
})(); 

私のルート-MOD /私のルート-mod.provider.js

(function(){ 
    'use strict'; 
    /* global angular */ 

    angular.module('MyRouteMod') 
    .provider('MyRouteModProvider',Provider); 

    Provider.$inject = []; 

    function Provider() { 
     var provider = this; 
     provider.$get = function() { 
      return { route : someFunction }; 
     } 

     function someFunction(){...} 
    } 
})(); 

メインアプリ/主app.config.js

(function(){ 
    /* global angular */ 
    'use strict'; 
    angular.module('MainApp').config(Config); 

    Config.$inject = [ 
     'MyRouteModProvider', 
     '$routeProvider', 
     '$locationProvider', 
     '$controllerProvider', 
     '$compileProvider', 
     '$filterProvider', 
     '$provide' 
    ]; 

    function Config(
     MyRouteModProvider, 
     $routeProvider, 
     $locationProvider, 
     $controllerProvider, 
     $compileProvider, 
     $filterProvider, 
     $provide 
    ) { 

     /* ... do some config stuff ... */ 
    } 
})(); 

index.htmlを

<!DOCTYPE> 
<html> 
    <head><title>My App</title></head> 
    <body> 
     <!-- Some other stuff --> 
     <div ng-view></div> 
     <!-- Some other stuff --> 

     <script src="vendor-stuff"></script> 
     <script src="vendor/require.js" data-main="main">/script> 
    </body> 
</html> 

私は式のうち、requirejsを取り、ロードしていないプロバイダと同じ問題を得ていました。

MainAppが使用できないか、MyRouteModが使用できないか、MyRouteModProviderが使用できないことがあります。

ご提案ください。

答えて

1

角の命名規則。プロバイダの場合、文字列 'Provider'がコンストラクタ名に追加されます。したがって、あなたが持っている場合:

angular.module('MyMod').provider('MickeyMouse',Provider); 

次に角度は'MickeyMouseProvider'を探します。あなたは

angular.module('MyMod').provider('MickeyMouseProvider',Provider); 

を行うのであれば、その角度は、これはあなたの時間を少し節約'MickeyMouseProviderProvider'

希望を探します。

関連する問題