Grails Asset Pipeline未提供正确的Javascript订单

时间:2016-05-05 18:13:16

标签: angularjs grails asset-pipeline

我在Grails 3.1.5上创建一个Angular应用程序,资产管道没有给我提供我需要的Javascript文件。我有以下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;
    });

我将所有这些包含在我的主要GSP中 <asset:javascript src="angello.js" />呈现HTML时,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.

我认为这是构建依赖指令的方式中的一个问题。我尝试了很多不同的东西,但似乎没有任何影响顺序。

1 个答案:

答案 0 :(得分:1)

在加载依赖项之前,必须首先加载用于创建modulecontroller等工件的service。在上述情况下,控制器在模块本身之前是必需的。

因此,当需要控制器(styoryBoardController.js)时,它会抱怨模块不存在。

//= require_self移到angello.storyboard.js的顶部将确保首先需要模块本身,然后是依赖项。