如何从模块实例获取服务实例

我有一些模块定义和服务,如下面的模块

var services=angular.module('app.services', []); services.factory('ApiService', function($http,$cookies,UserService){ var dataFactory = {}; dataFactory.request=function(url,data,next){ return "Hi"; }; return dataFactory; }); 

现在在另一个脚本我可以访问模块

 services=angular.module('app.services') 

但是我怎样才能从该模块获得服务实例

 apiService=angular.module('app.services').service('ApiService') 

编辑:

在阅读并理解了作者的评论之后,如果用户不被允许的话,他实际上是想阻止整个应用程序。 他希望通过重复使用在他的ApiService工厂中编写的相同代码来完成。

你可以'hook'到你的控制器之前调用的app.run函数,你可以利用$window.location.href将用户重定位到另一个页面或站点(如果不允许的话)

Iv'e用app.run条目更新了这个运动员

app.js

 var app = angular.module('app', ['app.services']); app.run(function(ApiService, $window) { result = ApiService.request(); // This is where you check your permissions var has_permissions = false; // ... if (!has_permissions) { alert('being transferred to plnkr.co due to lack of permissions'); $window.location.href = 'http://plnkr.co/'; } // Otherwise, continue normally }); 

原版的:

我做了这个笨蛋

如果您将所有逻辑分隔到api.services模块,请将其包含在您的应用程序中

app.js

 var app = angular.module('app', ['app.services']); 

那么你可以通过引用所需的工厂 – ApiService来使用它

 app.controller('myCtrl', ['$scope', 'ApiService', function($scope, ApiService) { $scope.result = ApiService.request(); } ]); 

app.services.js

 var services = angular.module('app.services', []); services.factory('UserService', function() { var UserService = {}; UserService.foo = function() { return "foo"; }; return UserService; }); services.factory('ApiService', function($http, UserService) { var ApiService = {}; ApiService.request = function(url, data, next) { return UserService.foo() + " Hi"; }; return ApiService; }); 

plunker

在这里输入图像描述

Interesting Posts