簡體   English   中英

由module.provider定義的注入服務

[英]Injecting service which define by module.provider

很抱歉提出這樣的問題,但是我已經花了幾天的時間來解決這個問題。 但是即時通訊確實需要幫助。 我已經閱讀了理解依賴注入 ,並且其他堆棧問題在應用程序配置的自定義提供程序內部使用$ http在運行塊上使用$ injector在我的代碼中也不起作用。

也許這里有人可以幫助我,我也擔心如何注釋提供者以縮小規模。

My code in 

這里

問題是,當您在_getItem調用$http時,您就在“控制器”中。 一個解決方案可能是這樣做:

  this.$get = function($http) {
    return {
      mainUrl : _mainUrl,
      getItem : _getItem,
      httpWrapper : $http
    };

然后在_getItem分配(或直接使用httpWrapper):

var $http = this.httpWrapper;

為了避免縮小問題,您可以將注入添加到方法$get

  this.$get =   ['$http', function($http) {

這里是更新的Plunker: http ://plnkr.co/edit/m7oXNolo6iV8Zy1NJ0vx

編輯 :我認為您想要實現的是:

  var _getItem = function() {
    var _d = null;
            console.log(this)
    var $http = this.httpWrapper;
    var $q = this.qWrapper;
     _d = $q.defer();
    $http.get(_mainUrl)
    .success(function(data) {
      console.log(data);
      _d.resolve( {data: data, x: "efe"} );
    })
    .error(function(status) {
      _d.resolve( status );
    });
    return _d.promise;
  };

$q.defer()允許將http調用延遲到您的控制器,然后必須在您的控制器上進行以下編輯:

facade.getItem().then(function(data){
  $scope.myReturn = data;
}

Updated Plunkerhttp : Updated Plunker

注意 :考慮到then的性質是異步的,因此如果您之后直接使用該變量,它將仍然是未定義的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM