如何在 Angular 中手动声明和使用模块、控制器、服务和引导程序



我正在尝试构建一个具有一个控制器,一个服务和手动引导的AngularJS应用程序(没有ng-app)。问题是我一直有一个错误:

参数"AppController"不是一个函数,得到字符串

.HTML

<!DOCTYPE HTML>
<html xmlns:ng="http://angularjs.org">
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js" type="text/javascript"></script>
        <script src="inc/bootstrap.js" type="text/javascript"></script>
        <script src="inc/controllers.js" type="text/javascript"></script>
        <script src="inc/services.js" type="text/javascript"></script>
    </head>
    <body ng-controller="AppController">
        [...]
    </body>
</html>

引导.js

angular.element(document).ready(function() {
    angular.bootstrap(document, ['htmlControllerApp']);
});

控制器.js

angular.module('htmlControllerApp', [])
.controller('AppController', 'ConnectionService', ['$scope', function ($scope, ConnectionService) {
    // Code
}]);

服务.js

angular.module('htmlControllerApp')
.factory('ConnectionService', ['$rootScope', function ($rootScope) {
    // Code
}]);

谢谢


编辑 - 解决方案

控制器.js中,请改用:

angular.module('htmlControllerApp')
.controller('AppController', ['$scope', 'ConnectionService', function ($scope, ConnectionService) {
    // Code
}]);

bootstrap.js 中,作为一种"良好做法":

angular.module('htmlControllerApp', []);
angular.element(document).ready(function() {
    angular.bootstrap(document, ['htmlControllerApp']);
});

这将在引导程序中仅创建一次模块.js AngularJS将尝试在控制器.js和服务.js中检索它。

这是您要查找的页面。

https://docs.angularjs.org/api/ng/function/angular.bootstrap

并改变这一点

angular.module('htmlControllerApp', [])
  .controller('AppController', 'ConnectionService', ['$scope', function ($scope,     ConnectionService) {
    // Code
}]);

对此 ->

angular.module('htmlControllerApp', [])
  .controller('AppController', ['$scope', 'ConnectionService', function ($scope, ConnectionService) {
    // Code
}]);

相关内容

  • 没有找到相关文章

最新更新