我有一个带有angularjs的MVC 4.5项目。我已经对控制器和工厂进行了捆绑和缩小。我已经阅读了关于使角度控制器和工厂缩小安全的文章,但是我得到了这个错误,我找不到问题:
未知提供商:$ resourceProvider
模块:
var app = angular.module("seducApp", []);
app.$inject = ['ngRoute', 'ngResource', 'ngSanitize', 'ngAnimate', 'ui.tinymce', 'mgcrea.ngStrap.tooltip',
'mgcrea.ngStrap.datepicker', 'mgcrea.ngStrap.alert', 'ui.select', 'uuid4', 'rt.popup', 'angular-md5', 'mgcrea.ngStrap.button',
'ui.bootstrap.tabs', 'mgcrea.ngStrap.timepicker', 'naif.base64', 'base64', 'angular-smilies', 'angular-google-adsense',
'angularFileUpload', 'angular.directives-round-progress', 'numericbinding', 'ngImgCrop', 'ui.tree', 'timer',
'$httpProviderConfig', '$compileProviderConfig', '$locationProviderConfig', 'uiSelectConfig', 'datetimeFilter',
'cutFilter', 'groupFilter', 'partitionFilter', 'aDisabledDirective'];
工厂:
app.factory('siteRepository', function ($resource, $http) {
return {
checkSiteStatus: function () {
return $resource('/Home/GetSiteStatus').query();
},
getSiteStatus: function () {
return $http.get('/Home/GetSiteStatus')
},
getSiteChangeLog: function () {
return $http.get('/Home/GetSiteChangeLog')
}
}
});
在web.config中将Debug设置为true,然后我不应该获得工厂的缩小版本。
我尝试了很多东西,但没有解决方案:(
答案 0 :(得分:2)
删除app.$inject
声明。而是传递依赖关系数组。请注意以下简化的演示,该演示稍微展示了一下......
var mod = angular.module('mod', []);
mod.factory('modFactory', function() {
return {
'woo': function woo() {
console.log('woah!');
}
}
});
// -----------------------------------------------------
var app = angular.module('app', ['mod']);
app.controller('ctrl', function(modFactory) {
modFactory.woo();
});
上述情况有效,而以下情况将失败......
var app = angular.module('app', []);
app.$inject = ['mod'];
未知提供者:modFactoryProvider
JSFiddle Link - 演示
快速解决您的问题包括将app
定义更改为以下内容......
var app = angular.module('seducApp', ['ngRoute', 'ngResource', 'ngSanitize', 'ngAnimate', 'ui.tinymce', 'mgcrea.ngStrap.tooltip',
'mgcrea.ngStrap.datepicker', 'mgcrea.ngStrap.alert', 'ui.select', 'uuid4', 'rt.popup', 'angular-md5', 'mgcrea.ngStrap.button',
'ui.bootstrap.tabs', 'mgcrea.ngStrap.timepicker', 'naif.base64', 'base64', 'angular-smilies', 'angular-google-adsense',
'angularFileUpload', 'angular.directives-round-progress', 'numericbinding', 'ngImgCrop', 'ui.tree', 'timer',
'$httpProviderConfig', '$compileProviderConfig', '$locationProviderConfig', 'uiSelectConfig', 'datetimeFilter',
'cutFilter', 'groupFilter', 'partitionFilter', 'aDisabledDirective']);
查看Angular DI docs了解有关主题
的更多详情答案 1 :(得分:0)
首先你可以试试这段代码吗?
app.factory('siteRepository',['$resource','$http', function ($resource, $http) {
return {
checkSiteStatus: function () {
return $resource('/Home/GetSiteStatus').query();
},
getSiteStatus: function () {
return $http.get('/Home/GetSiteStatus')
},
getSiteChangeLog: function () {
return $http.get('/Home/GetSiteChangeLog')
}
}
}]);
如果这项工作,您在缩小和注射方面遇到了经典问题。
我建议您查看https://github.com/olov/ng-annotate或重写应用程序中的所有注入语法(使用依赖项名称数组)
如果有帮助和/或您是否需要更多帮助,请告诉我。