编辑据我所知,通过进一步研究,AngularJS无法按照我希望的方式注入控制器代码。无论如何,我仍然感兴趣的是它为什么不起作用以及如何完成。
我一直在尝试创建自己的AngularJS + RequireJS项目种子,并且我遇到了app模块加载的问题(我在网络检查器中看到它们)但从未实际执行过。 因此,我已经将应用程序剥离到AngularJS库,并在RequireJS中处理了基本依赖项,我发现该应用程序正确加载了所有文件和模块,但顶层应用程序模块控制器(现在应用程序本身中唯一的模块,我在文档上的引导永远不会执行。使用ng-inspector我得出的结论是,还没有定义控制器范围。 控制台中没有任何错误,我可以确认的是app bootstraps正确并加载所有模块,但appController从未执行过。
这是appBootstrap.js的代码:
//requirejs config
require.config({
baseUrl: '/',
paths: {
'lib' : 'scripts/lib/',
'angular' : 'vendor/angular/angular.min'
},
shim: {
'angular': {
exports: 'angular'
}
}
});
//the actual app bootstrapping
require(['lib/appVendorLibs'], function(){
require([
'lib/appModule'
], function(appModule) {
angular.bootstrap(document, [appModule.name]);
});
});
这是appVendorLibs.js:
define([
'angular'
], function() {});
这是我为了测试失败的控制器执行而提出的准系统appModule.js:
define([
'angular',
'lib/appController'
], function(angular, appController) {
var app = angular.module('app', []);
app.controller('appController', appController);
return app;
});
这是appController.js:
define([], function() {
var appController = function($scope, $rootScope){
$rootScope.aTestVar = "OK";
$scope.testObject = {};
$scope.testObject.text = "OK";
console.log("OK");
};
return ['$scope', '$rootScope', appController];
});
永远不会发生console.log()
次调用,引用$rootScope
和$scope
的行也不做任何事情。
另外,我的ng-bind
中index.html
应该显示testObject.text
变量,但这种情况从未发生过。
的index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/styles/styles.css"/>
<title>AngularJS Module Loading Seed</title>
<base href="/">
</head>
<body>
<!-- Main Content Container -->
<p ng-bind="testObject.text"></p>
<script src="/vendor/requirejs/require.js" data-main="/scripts/lib/appBootstrap.js"></script>
</body>
</html>
这可能是什么问题?