2016-05-05 16 views
1

Grails 3.1.5でAngularアプリケーションを作成していて、アセットパイプラインで必要なJavascriptファイルの注文が得られません。私は、次のJavaScriptファイルを持っている:Grails Asset Pipelineが適切なJavascriptを使用していない

angello.js

//= require /angular/angular 
//= require /angular-route/angular-route 
//= require /angello/core/angello.core 
//= require /angello/index/angello.index 
//= require /angello/common/angello.common 
//= require /angello/storyboard/angello.storyboard 

var myModule = angular.module("Angello", [ 
    "angello.core", 
    "angello.index", 
    'ngRoute', 
    'Angello.Common', 
    'Angello.Storyboard' 
]); 

myModule.config(function($routeProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: 'assets/angello/storyboard/tmpl/storyboard.html', 
      controller: 'StoryboardCtrl', 
      controllerAs: 'storyboard' 
     }) 
}); 
myModule.controller('MainCtrl', function() { }); 

angello.storyboard.js

//= require_tree services 
//= require_tree controllers 
//= require_tree directives 
//= require_tree templates 
//= require_self 

angular.module('Angello.Storyboard', ['Angello.Common']); 

storyboardController.js

//= require /angular/angular 
//= require /angello/storyboard/angello.storyboard 
//= require_self 

angular.module('Angello.Storyboard') 
    .controller('StoryboardCtrl', function() { 
     var storyboard = this; 
    }); 

私は <asset:javascript src="angello.js" />ときHTMと私のメインのGSPでこのすべてを含めますLレンダリングされ、JSファイルの順序は、私が期待するものではありません。

<script type="text/javascript" src="/assets/angular/angular.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angular-route/angular-route.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angular/angular-resource.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/core/angello.core.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/core/services/DomainServiceFactory.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/index/angello.index.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/index/services/applicationDataFactory.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/index/controllers/indexController.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angular/ui-bootstrap-tpls.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/common/angello.common.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/storyboard/controllers/storyboardController.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello/storyboard/angello.storyboard.js?compile=false" ></script> 
<script type="text/javascript" src="/assets/angello.js?compile=false" ></script> 

問題はストーリーボードJSファイルは文句の角度で、その結果、私は必要なものの逆の順序で含まれていることである

Error: [$injector:nomod] Module 'Angello.Storyboard' 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.

これは私が依存関係の指示を構成した方法の問題だと思います。私は多くの異なることを試みましたが、何もその順序に影響を与えないようです。

+0

'angello.storyboard.js'では、モジュール自体の前に 'controllers'が必要です。そのため、コントローラ( 'styoryBoardController.js')が必要な場合、モジュールが存在しないことに不満を持ちます。 '// = require_self'を' angello.storyboard.js'の一番上に移動してみてください。最適化することもできます。 – dmahapatro

+0

@dmahapatroそのトリックをした!回答として投稿してください。私はそれを正しく記入して喜んでします。 –

答えて

1

controller,serviceなどのアーティファクトの作成に使用されるmoduleは、扶養家族が読み込まれる前に最初に読み込まれなければなりません。上記の場合、モジュール自体の前にコントローラが必要です。

コントローラ(styoryBoardController.js)が必要な場合は、モジュールが存在しないことを訴えます。

//= require_selfを先頭に移動してangello.storyboard.jsに移動すると、モジュール自体が最初に依存関係になっていることが保証されます。

関連する問題