【发布时间】:2014-05-28 09:50:42
【问题描述】:
当我将 RequireJS 与 AngularJS 一起使用时,发生了一些非常奇怪的事情。我设法通过 RequireJS 加载了我所有的角度依赖项。当我在 Chrome 的开发者工具中打开 Sources 窗格时,我可以看到下载的这些脚本。但是 Angular 一直在控制台中抛出一个错误,它无法实例化模块:
Uncaught Error: [$injector:modulerr] Failed to instantiate module MyTestApp due to:
Error: [$injector:nomod] Module 'MyTestApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure...<omitted>...0)
Angular 在加载 RequireJS 时似乎无法与 HTML 页面中的 ng-app 标记绑定。我不确定是否是这种情况,但对我来说似乎是这样,因为当我将 angular.min.js 手动导入 HTML 页面时,一切正常。
在 Angular 中使用 RequireJS 时我做错了什么吗?我应该如何将两者结合使用?这是我的代码的样子:
index.html
<!doctype html>
<html lang="en" ng-app="MyTestApp">
<head>
<meta charset="utf-8">
<title>AngularJS</title>
<link rel="stylesheet" href="css/style.css"/>
<script data-main="main" src="js/require.js"></script>
</head>
<body>
<div ng-controller="TestController">{{helloMessage}}</div>
</body>
</html>
main.js
require.config({
baseUrl: "scripts/app",
shim: {
"angular": {
exports: "angular"
},
"angular.route": {
deps: ["angular"]
},
"bootstrapper": {
deps: ["angular", "angular.route"]
},
},
paths: {
"angular": "../angular",
"angular.route": "../angular-route",
"bootstrapper": "bootstrapper"
}
});
require(["angular", "angular.route", "bootstrapper"],
(angular, ngRoute, bootstrapper) => {
bootstrapper.start();
}
);
bootstrapper.js
function run() {
app = angular.module("MyTestApp", ["ngRoute"]);
app.controller("TestController", TestController);
console.log(app); //Prints object to console correctly, ie, angular was loaded.
}
【问题讨论】:
标签: javascript angularjs requirejs