gpt4 book ai didi

javascript - 直接调用 AngularJS 上工厂实例化的对象

转载 作者:行者123 更新时间:2023-11-30 16:31:14 25 4
gpt4 key购买 nike

考虑下面的模块,如何不依赖 AngularJS 的依赖注入(inject)直接调用 RESTService.get

angular.module('RESTModule', ['ngResource']).
factory('RESTService', ['$resource', function($resource) {
return $resource('http://jsonplaceholder.typicode.com/posts/1', {});
}
]);

我希望能够创建如下所示的库方法,直接调用工厂创建的对象,但是 factory() 没有像我预期的那样工作。

var MyLibrary = {};
MyLibrary.method = function() {
// ...
// The line below miserably fails... :-(
angular.module('RESTModule').factory('RESTService').get();
};

我可能做错了,应该考虑编写一个 AngularJS 服务……但由于我坚持不懈,我决定寻求您的帮助。

谢谢!

旁注:我正在编写一个应用程序,允许开发人员在其中包含他们自己的表单( View ),以及他们自己的模块来控制这些 View (到目前为止我做得很好)。

但我不想强制他们在自己的代码中注入(inject)模块(如 RESTModule),我想让他们调用“静态”库方法(如 MYLibrary.method) 代替。

最佳答案

angular.element(document.querySelector('*[ng-app]')).injector().get('RESTService');

应该完成这项工作,但您必须确保已加载 Angular 并完成依赖注入(inject),如下所示:

var restService;
var timer = setTimeout(function(){
if(angular &&
angular.element(document.querySelector('*[ng-app]')).injector())
{
clearTimeout(timer);
restService = angular.element(document.querySelector('*[ng-app]')).injector().get('RESTService');
}}, 1000);

关于javascript - 直接调用 AngularJS 上工厂实例化的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293754/

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