gpt4 book ai didi

javascript - 如何从模块实例[Angular]获取服务实例

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:19 24 4
gpt4 key购买 nike

我定义了一些模块和服务,如下所示

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在您的 Controller 之前调用的函数,您可以利用 $window.location.href 将用户重新定位到另一个页面或站点(如果不允许)

我更新了这个 plunker 带有 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

});

原文:

我做了这个 plunker

如果您将所有逻辑分离到 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

enter image description here

关于javascript - 如何从模块实例[Angular]获取服务实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25093270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com