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

时间:2016-03-31 04:49:39

标签: javascript angularjs factory

我对角度很新,我试图运行一个有角度的页面但无论我尝试什么,我都会遇到一个错误,说我没有创建一个角度模块。

由于以下原因导致无法实例化模块HotelApp: 错误:[$ injector:nomod] http://errors.angularjs.org/1.5.3/ $ injector / nomod?p0 = Hote ... blah blah blah

我的代码看起来像这样

(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) {

我在为脚本和ng-app中明确声明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);
                }
            })();

但它仍然没有工作..

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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) {

答案 2 :(得分:0)

您在2nd

中保留了[]参数DI,即module(依赖注入)
angular.module('APPNAME', [])

答案 3 :(得分:0)

  

更改此

angular.module(APPNAME)
  

有了这个

  angular.module('HotelApp',[])

答案 4 :(得分:0)

angular中的第一步是模块,你的应用程序的起点就像这样写

angular.module('APPNAME',[]);

第一个参数是指您的应用程序名称,第二个是依赖注入意味着您的应用程序需要像任何插件,服务,指令......等等