Javascript 带工厂、服务和控制器的角度页面

Javascript 带工厂、服务和控制器的角度页面,javascript,angularjs,factory,Javascript,Angularjs,Factory,我对angular还比较陌生,正在尝试运行angular页面,但是无论我尝试什么,我都会不断地遇到一个错误,说我没有创建angular模块 无法实例化模块HotelApp,原因是: 错误:[$injector:nomod]$injector/nomod?p0=Hote。。。废话废话 我的代码如下所示 (function () { "use strict"; angular.module(APPNAME) .facto

我对angular还比较陌生,正在尝试运行angular页面,但是无论我尝试什么,我都会不断地遇到一个错误,说我没有创建angular模块

无法实例化模块HotelApp,原因是: 错误:[$injector:nomod]$injector/nomod?p0=Hote。。。废话废话

我的代码如下所示

(function () {
            "use strict";
            angular.module(APPNAME)
                .factory('$hotelService', hotelServiceFactory);

            hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];

            function hotelServiceFactory($methodRepository) {
                var hotelServiceObject = AjaxScripts;
                console.log("Hotel Service", hotelServiceObject);
            }
        })();

        (function () {
            "use strict";

            angular.module(APPNAME)
                .controller("HotelController", hotelController);

            hotelController.$inject = ['$scope', '$hotelService'];

            function TracksController($scope, $hotelService) {
angular.module('APPNAME',[]);
我最困惑的是,为什么它说我的模块没有实例化,而我在脚本和ng应用程序中都明确声明了APPNAME变量

编辑 我现在有

 (function () {
                "use strict";
                angular.module("HotelApp", [])
                    .factory('$hotelService', hotelServiceFactory);

                hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];

                function hotelServiceFactory($methodRepository) {
                    var hotelServiceObject = AjaxScripts;
                    console.log("Hotel Service", hotelServiceObject);
                }
            })();

但是它仍然不起作用。

您在哪里创建模块。必须以这种方式创建模块。
angular.module('APPNAME',[])
然后您可以使用
angular.module('APPNAME')
创建控制器、工厂或。。。
但只有在创建模块[](用于依赖项注入)时,模块内部才应该存在。

您在
模块中留下了
2nd
参数,即
[]
,即
DI
(依赖项注入)

angular.module('APPNAME', [])
改变这个

用这个


angular模块的第一步是应用程序的起点,您可以这样编写

(function () {
            "use strict";
            angular.module(APPNAME)
                .factory('$hotelService', hotelServiceFactory);

            hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];

            function hotelServiceFactory($methodRepository) {
                var hotelServiceObject = AjaxScripts;
                console.log("Hotel Service", hotelServiceObject);
            }
        })();

        (function () {
            "use strict";

            angular.module(APPNAME)
                .controller("HotelController", hotelController);

            hotelController.$inject = ['$scope', '$hotelService'];

            function TracksController($scope, $hotelService) {
angular.module('APPNAME',[]);

第一个参数是指您的应用程序名称,第二个参数是依赖项注入,这意味着您的应用程序进一步需要插件、服务、指令等。hotelServiceFactory。$inject
属性定义错误

//DO this
hotelServiceFactory.$inject = ['$methodRepository'];
//NOT this
//hotelServiceFactory.$inject = ['$methodRepository', $methodRepository];

function hotelServiceFactory($methodRepository) {
    var hotelServiceObject = AjaxScripts;
    console.log("Hotel Service", hotelServiceObject);
}
这会导致编译错误


此外,控制器声明与控制器函数名不匹配

angular.module(APPNAME)
    .controller("HotelController", hotelController);

hotelController.$inject = ['$scope', '$hotelService'];

//DO this
function hotelController($scope, $hotelService) {
//NOT this
//function TracksController($scope, $hotelService) {

标题可以让问题结束。更新它。你可以点击(或复制粘贴)errors.angularjs.org链接,并解释为什么会出现错误。不管怎样,其他人已经正确地指出了这个问题。删除即时调用函数你的代码会工作的。我理解你的意思。APPNAME不是实际名称,它是一个值为app实际名称“HotelApp”的变量,然后显示完整代码,在其中使用依赖项初始化模块。变量在哪里。这应该是可行的。。。。(函数(){“使用严格”;angular.module(“HotelApp”,[]).factory(“$hotelService',hotelServiceFactory”);hotelServiceFactory.$inject=['$methodRepository'];函数hotelServiceFactory($methodRepository){var hotelservicecobject=AjaxScripts;console.log(“hotelservice”,hotelservicecobject);}}}();我尝试过这个方法,但似乎没有问题。您是否在主index.html中包含
ng app=“APPNAME”