2016-06-18 7 views
2

これは私の工場出荷時のサービスです。私のコントローラで角型工場からobjを返すことはできません

(function() { 
    var appfactory = angular.module("RoyalApp"); 
    appfactory.factory('packService', packService); 

    packService.$inject = ['varsService', '$http']; 

    function packService(varsService, $http) { 

     var packages = { 

      getPackages: function() { 
       $http({ 
        method: "GET", 
        url: "http://localhost:63666/api/Package?customer_id=" + varsService.dataObj._id 
       }).then(function mySuccess(response) { 
        return response.data; 
       }, function myError(response) { 

       }); 
      } 
     } 
     return packages; 
    } 
})(); 

はまた、私はクロームコンソールにはエラーがないし、私のhttp responeが正しいこの

vm.packages = packService.packages.getPackages(); 

を試してみました

var vm = this; 
vm.packages = packService.packages.getPackages; 

コントローラの範囲内でそれらを格納するためにこれを使用します.i単に応答を返すことはできません。

答えて

3

それは次のようになります。

packService.getPackages().then(function(packages) { 
    vm.packages = packages; 
}); 

そしてgetPackagesが約束返さなければならないことに注意してください:ノートの

getPackages: function() { 
    return $http({ 
     method: "GET", 
     url: "http://localhost:63666/api/Package?customer_id=" + varsService.dataObj._id 
    }).then(function mySuccess(response) { 
     return response.data; 
    }, function myError(response) { 

    }); 
} 

カップル。 packServiceの公開APIには単一のメソッドgetPackagesが含まれています。これはあなたが呼び出す必要があります。次に、データがロードされたときに呼び出されるコールバック(thenメソッド付き)を提供するために使用する約束オブジェクトを返します。

+0

私はそれが多分私が何かを見逃してみました。時間を費やしてくれてありがとう。私は継続する前に、私のアプリを一時停止して、工場やサービスについて何らかの調査をすることを考えています。 – Nickos

+0

何が問題なのですか?コンソールのエラーは何ですか? – dfsq

+0

私は自分のコントローラーで働いていた機能を追加しました(異なるスコープ変数を持っていました)。何故か、私はコントローラからのhttp呼び出しからではなく、サービスからデータを取り出したいと思っていました。だから私はサービス内で自分の機能を移しても、私のhttp呼び出しが働いていると思っていましたが、私のコントローラーで読むことができる変数であるサービスの応答を渡すことができませんでした。おそらく私は間違った穴の方法に近づいています。 – Nickos

1

コントローラは

angular.module('myApp', []) 
     .controller('MyCtrl', ['$scope' 'packService', function($scope, packService){ 
      var vm = this; 
      packService.getPackages().then(function(packages) { 
      vm.packages = packages; 
      }); 
     }]); 
1

あなたは無名関数の代表者で名前を入れるべきではありません。 'mySuccess' & 'myError'を削除して、もう一度やり直してください(私の前の解答で述べたように、あなたのコントローラーの約束どおりに返品を処理することを忘れないでください)。

getPackages: function() { 
      $http({ 
       method: "GET", 
       url: "http://localhost:63666/api/Package?customer_id=" + varsService.dataObj._id 
      }).then(function (response) { 
       return response.data; 
      }, function (response) { 

      }); 
     } 
関連する問題