Я использую Play Framework (2.5.9). На моем шаблоне scala html я вытягиваю Angular через WebJars. Затем я укажу модуль и контроллер, который я хочу использовать для своей страницы. Однако, когда я пытаюсь загрузить страницу, соответствующие переменные, которые должны быть установлены на «привет» через AbstractACtrl, не устанавливаются. Кроме того, в консоли браузера появляется следующая ошибка:AngularJs, используемый с Play не может найти или создать экземпляр модуля
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 непосредственно (без WebJars).
2) Потяните в угловое route.js, angular-resource.js и/или angular-animate.js с/без WebJars.
3) «data-ng-app» - сделать его «ng-app» или «x-ng-app».
4) Пропустите в $ объеме к контроллеру и ссылки все поля через «$ рамки.» ... вместо того, чтобы «это.» ...
5) Сделать «переменная Abstracta» в начале мой JavaScript «var ab».
6) Поместите сценарий, который тянется в угловой части «голова» вместо части тела.
7) Удалите "this.originalAs = @aDocs;" линии от контроллера.
8) Поместите весь javascript в «головную» часть страницы.
Ниже мой текущий код. Пожалуйста, дайте мне знать, почему модуль «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>