угловое требование requirejs не регистрирует контроллер / службы / и т. д.
У меня очень простое приложение requirejs и угловое демо. Когда я запускаю код, это похоже на то, что angular не регистрирует homeController (даже если файл работает и выдает «Hello from home controller»). Это печально, когда почти нет отладочной информации о том, как решить эту проблему. Любая помощь будет принята с благодарностью!
На моей локальной машине я получаю это сообщение об ошибке:
"Error: [ng:areq] Argument 'HomeController' is not a function, got undefined"
На Plnkr я получаю другое сообщение:
Error: [ng:areq]
Это ссылка PLNKRhttp://plnkr.co/edit/zNVIYckX5dAzV3CpEzXv?p=preview
index.html
<body ng-app="app">
<div ng-controller="HomeController">
{{message}}
</div>
<script src="http://requirejs.org/docs/release/2.1.14/minified/require.js" data-main="main.js"></script>
</body>
main.js
require.config({
paths: {
"jquery": '//code.jquery.com/jquery-2.1.1.min',
"angular": '//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min',
"angular.route": '//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular-route.min'
},
shim: {
"angular": { deps: ["jquery"], exports: "angular" },
"angular.route": { deps: ["angular"], exports: "angular.route" },
},
deps: ["app", "routes"]
});
//kickoff the app
require(["app", "routes" ]);
app.js
define(["angular"], function () {
$("body").append("hello from app<br/>");
return angular.module("app", ['ngRoute']);
});
routes.js
define("routes", ["app", "angular.route", "homeController"], function(app) {
$("body").append("hello from angular.route<br/>");
app.config(function($routeProvider, $locationProvider) {
$("body").append("$routeProvider<br/>");
$locationProvider.html5Mode(true);
$routeProvider.when("/", {
templateUrl: "home/home.html",
controller: "HomeController"
})
});
});
homeController.js
define("homeController", ["app"], function (app) {
$("body").append("hello from home controller<br/>");
app.controller("HomeController", function ($scope) {
$("body").append("hello from home controller body<br/>");
$scope.message = "message from home controller";
});
});