javascript - 如何使Angular的服务可供独立对象使用; Angular JS

标签 javascript angularjs angularjs-service

在我的 Angular 应用程序中,我试图创建一个 dataAdapter 工厂,在其中我可以在本地适配器api适配器之间快速切换在开发和发布期间。

我的 dataAdapter 工厂如下所示

myApp.factory('dataAdapter', function($http, $q){
   var dataAdapter = new apiAdapter;
   //var dataAdapter = new localAdapter;
    return dataAdapter;
});

我的适配器对象(这里是 api 适配器)看起来像这样。 (这将位于另一个名为 apiAdapter.js 的文件中)

var apiAdapter = function(){
  return {
    getData : function(){ $http.get(). ....; }
  }
}

现在这对我不起作用,因为 $http 在 apiAdapter 对象内不可用。现在,如果我将 var apiAdapter = function(){....} 移到 var dataAdapter = new apiAdapter; 之前,它就可以正常工作。有没有办法让 apiAdapter 可以使用 Angular 服务,而无需将其移动到工厂内部?

我希望我能够清楚地描述我的问题。

最佳答案

我真的没有看到分片这个小功能的意义,所以在我看来它应该看起来像

myApp.factory('dataAdapter', function($http, $q){
    return {
      getData : function(){ $http.get(). ....; }
    }
});

但如果由于某种原因你必须这样做

myApp.factory('dataAdapter', function($http, $q){
   var dataAdapter = new apiAdapter($http);
   //var dataAdapter = new localAdapter;
    return dataAdapter;
});

var apiAdapter = function(http){//
  return {
    getData : function(){ http.get(). ....; }
  }
}

关于javascript - 如何使Angular的服务可供独立对象使用; Angular JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24627443/

相关文章:

javascript - 在 redux 形式的字段 onchange 上触发操作创建者

javascript - 使用 JQuery 将行追加到表中

javascript - AngularJs:通过服务传递 $scope 变量

angularjs - 从另一个 angular js Controller 更新一个 angular js Controller 的 ng-model

javascript - TR :not(:first-child) being ignored for some reason

javascript - 在 Joomla 上使用自定义 slider ,它在我的机器上工作正常,但在托管时遇到问题

javascript - 将参数传递给 ng-show 中调用的函数

javascript - DOM 元素未从 Angular Controller 更新

javascript - 为什么 ngSanitize 依赖项会破坏我的应用程序?

angularjs - 从 AngularJS 中的服务刷新数据的最佳(惯用)方法