我有一个具有以下结构的角度应用
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答案 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])