Javascript 与Play一起使用的AngularJs无法找到或实例化模块

Javascript 与Play一起使用的AngularJs无法找到或实例化模块,javascript,angularjs,playframework-2.0,angularjs-module,webjars,Javascript,Angularjs,Playframework 2.0,Angularjs Module,Webjars,我正在使用Play框架(2.5.9)。在我的scala html模板上,我通过WebJars拉入Angular。接下来,我指定要用于页面的模块和控制器。然而,当我尝试加载页面时,应该通过AbstractACtrl设置为“hi”的相关变量没有被设置。此外,我在浏览器控制台中遇到以下错误: Error: [$injector:modulerr] Failed to instantiate module abstractA due to: [$injector:nomod] Module 'abstr

我正在使用Play框架(2.5.9)。在我的scala html模板上,我通过WebJars拉入Angular。接下来,我指定要用于页面的模块和控制器。然而,当我尝试加载页面时,应该通过AbstractACtrl设置为“hi”的相关变量没有被设置。此外,我在浏览器控制台中遇到以下错误:

Error: [$injector:modulerr] Failed to instantiate module abstractA due to:
[$injector:nomod] Module 'abstractA' 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.
我不明白为什么模块“abstractA”不可用。我正在view.scala.html页面上定义它。。。我非常确定angular.js正在被引入,因为在Chrome中,源代码显示了webjars/angular.js/1.5.9/angular.js。下面代码中的所有console.log和console.error都是我要输出到控制台进行调试的消息。现在没有人真正打印到控制台,这表明执行从未到达他们手中

我尝试过的事情:

1) 直接加载angular.js(不使用Webjar)

2) 拉入angular-route.js、angular-resource.js和/或angular-animate.js(带/不带Webjar)

3) “数据ng应用程序”-将其设置为“ng应用程序”或“x-ng-app”

4) 将$scope传入控制器并通过“$scope”引用所有字段。。。而不是“这个”

5) 改为在我的JavaScript“var ab”的开头使用“var abstractA”

6) 将有角度的脚本放在“头部”部分,而不是“身体”部分

7) 从控制器中删除“this.originalAs=@aDocs;”行

8) 将所有javascript放在页面的“head”部分

下面是我当前的代码。请让我知道为什么“abstractA”模块不可用

build.sbt:

libraryDependencies ++= Seq(
    ...
    "org.webjars"             % "angularjs"                % "1.5.9",
    "org.webjars"             % "angular-ui-bootstrap"     % "2.2.0",
    "org.webjars"             % "bootstrap"                % "3.3.7-1",
    "org.webjars"             %% "webjars-play"            % "2.5.0"
)
view.scala.html:

@(aDocs: List[String],
  webJarAssets: controllers.WebJarAssets)

<!DOCTYPE html>

<meta charset='utf-8'/>

<html lang='en'>

<head>
  <link rel='stylesheet' href='@routes.WebJarAssets.at(webJarAssets.locate("css/bootstrap.min.css"))' />
  <link rel='stylesheet' type='text/css' href='@routes.Assets.versioned("assets/stylesheets/style.css")' />
</head>

<body>

  <script type='text/javascript' src='@routes.WebJarAssets.at(webJarAssets.locate("angular.js"))' />

  <script type="text/javascript">
    var abstractA = {};
    abstractA.module = angular.module('abstractA', []);
    abstractA.module.controller('abstractACtrl', ['$http', AbstractACtrl]);

    function AbstractACtrl($http) {
      var controller = this;
      this.name = "Abstract A Controller";
      this.abc = "hi";
      console.log("log beginning of controller");
      console.error("error beginning of controller");
      this.originalAs = @aDocs;

      this.setUrl = function() {
        console.error("error in setUrl");
        console.log("log in setUrl");
      };
    }
  </script>

<div data-ng-app='abstractA' x-ng-controller='AbstractACtrl as abstractACtrl'>
  ...
  <div ng-repeat="originalA in abstractACtrl.originalAs">
      <p>{{originalA}}</p>
  </div>
  <p>{{abstractACtrl.abc}}</p>
  <p>{{abc}}</p>
  <button ng-click='abstractACtrl.setUrl()'>Click!</button>
</div>
</body>
</html>
@(aDocs:List[String],
webJarAssets:controllers.webJarAssets)
var abstractA={};
abstractA.module=angular.module('abstractA',[]);
abstractA.module.controller('abstractACtrl',['$http',abstractACtrl]);
函数AbstractACtrl($http){
var控制器=此;
this.name=“抽象控制器”;
this.abc=“hi”;
console.log(“控制器的日志开始”);
控制台错误(“控制器错误开始”);
this.originalAs=@aDocs;
this.setUrl=函数(){
console.error(“setUrl中的错误”);
log(“登录setUrl”);
};
}
...
{{originalA}}

{{abstractACtrl.abc}

{{abc}}

点击
我想出了一个解决方案(多么讨厌的bug!)。在任何地方都没有记录

我不得不改变这一行:

this.originalAs = @aDocs;
致:

然后,使用Javascript split()函数将其转换为列表,以便在页面的其余部分使用

出于某种原因,那里的解析错误给出了找不到模块本身的错误语句。经过多次尝试和错误才意识到这是根本原因。

我找到了一个解决方案(多么讨厌的bug!)。在任何地方都没有记录

我不得不改变这一行:

this.originalAs = @aDocs;
致:

然后,使用Javascript split()函数将其转换为列表,以便在页面的其余部分使用

出于某种原因,那里的解析错误给出了找不到模块本身的错误语句。经过多次尝试和错误才意识到这是根本原因