简体   繁体   English

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

[英]How to declare and use modules, controllers, services and bootstrap manually in Angular?

i'm trying to build an AngularJS app that has one Controller, one Service and that Bootstraps manually (no ng-app ). 我正在尝试构建一个具有一个控制器,一个服务并且手动进行Bootstrap的AngularJS应用(无ng-app )。 The problem is that I keep having an error : 问题是我一直出错:

Argument 'AppController' is not a function, got string 参数'AppController'不是一个函数,得到了字符串

HTML 的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>

bootstrap.js bootstrap.js

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

controllers.js controllers.js

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

services.js services.js

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

Thanks 谢谢


EDIT - SOLUTION 编辑-解决方案

In controllers.js , use instead : controllers.js中 ,改用:

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

In bootstrap.js , as a "good practice" : bootstrap.js中 ,作为“良好实践”:

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

This will create the module just once in bootstrap.js and AngularJS will try to retrieve it in controllers.js and services.js . 这将在bootstrap.js中创建模块一次,AngularJS将尝试在controllers.jsservices.js中检索它。

This is the page you're looking for. 这是您要查找的页面。

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

and change this 并改变这个

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

to this -> 对此->

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM