我正在尝试使用可以从AngularJS中的模块调用的方法来定义服务。 这是我第一次尝试使用AngularJS。 也许这不是一个很好的方法,但我认为我可以将一些辅助方法放入一个可以重复使用的服务中。
但我发现模块中没有UrlHelperService。
我试图简化并提取正在使用的三个文件的骨架:
app.js
angular.module('myApp', ['ngRoute', 'myMod', 'UrlHelperService']);
urls.js
var serv = angular.module('UrlHelperService', []);
serv.service( "UrlHelperService",
function aaMethod( ) {
this.urlHelp = function( url, aa ) {
return url;
}
}
);
module.js
var module = angular.module( "myMod", [] );
module.factory(
"myMod",
[ "$http", "$q", "UrlHelperService",
function myModFactory( $http, $q, UrlHelperService) {
// UrlHelperService isn't available here. Why?
return;
}]);
答案 0 :(得分:2)
好吧,如果您想将UrlHelperService与myMod一起使用,则需要将其声明为myMod中的依赖项(就像在myApp中一样)。
var module = angular.module( "myMod", [
"UrlHelperService"
]);
module.factory(
"myMod", [
"$http",
"$q",
"UrlHelperService",
function myModFactory( $http, $q, UrlHelperService) {
// UrlHelperService isn't available here. Why?
return;
}
]);
但它可能更简单。您正在创建myMod模块和myMod服务(.factory类似于.service),为什么?
无论如何,将这些帮助函数放在可以重用的服务中是绝对正确的。尽管如此,它并不是顶级的。或许更简单的方法就足够了。例如:
angular
.module('myApp', [
'ngRoute'
])
.factory('UrlHelperService', [
function UrlHelperService() {
return {
urlHelp: function(url, aa) {
return url;
}
};
}
]);
在这里,您有app(自己的模块)和myApp内其他人可用的服务。有时某个服务的单独模块等更好,有时主模块内的服务就足够了。