ReferenceError:$ http未在angularJs中定义

时间:2014-05-11 04:04:37

标签: angularjs angularjs-scope

我有一个具有以下结构的角度应用

masterApp.js:

var masterApp = angular.module('masterApp', []);
masterApp.factory("organizationFactory", ["$http", organizationFactory(http)]);
masterApp.controller("organizationCtrl", ["$scope", "organizationFactory",organizationCtrl(scope,organizationFactory)]);

organizationFactory.js:

function organizationFactory(http) {
    return {

        getDefaultOrganization:function() {
            http.get(organizationRestUrl);
        },
        registerOrganization:function(organization) {
            http.post(organizationRestUrl, organization);
        },
        updateOrganization:function(organization) {
            http.put(organizationRestUrl, organization);
        },
        deleteOrganization:function() {
            http.delete(organizationRestUrl);
        }
    };
}

OrganizationCtrl.Js

function organizationCtrl($scope,organizationFactory) {

    alert(scope);
    scope.organization = organizationFactory.getDefaultOrganization();
}

当app运行时出现错误

ReferenceError:http未定义

masterApp.factory(" organizationFactory",[" $ http",organizationFactory(http)])

我改为将http注入$ http并将范围注入$ scope(我认为它不会导致错误,因为我正在使用适当的minfication安全指南)。但我仍然坚持这个错误 注意:我确信在脚本

之前加载angular.js

1 个答案:

答案 0 :(得分:2)

您应该传递对函数的引用,而不是调用函数并获取它返回的值。

使用此代码:

organizationFactory(http)

调用传入http的功能不存在

要传递函数引用,只需organizationFactory即可。

替换:

masterApp.factory("organizationFactory", ["$http", organizationFactory(http)]);
masterApp.controller("organizationCtrl", ["$scope", "organizationFactory",organizationCtrl(scope,organizationFactory)])

使用:

masterApp.factory("organizationFactory", ["$http", organizationFactory]);
masterApp.controller("organizationCtrl", ["$scope", "organizationFactory",organizationCtrl])