2017-04-20 4 views
0

私はバックエンドとの通信をカプセル化するサービスを持っている角度1.4のアプリケーションを持っています。エンドポイントからデータを返すために私が次のようなことをすれば。私は注入てるAPIサービスは、私は、コントローラまたは他のモジュールで、このサービスのメソッドを使用している場合は、私の$ HTTP Ajaxは変数を返すAngularJSサービス

function MyDataService(Api, $injector, $q, $log) { 
    var self = this; 
    function getAll(){ 
     return self.Api.get('/myData').then(function(data){ 
      self.data = data; 
      return self.data; 
     }) 
    } 
    return self; 
} 

を要求カプセル化し、私はそのプロパティを直接参照しているだろうか?コントローラーで二重バインドを行い、その変数が変更されると、サービス内のself.dataも変更されますか?私はJSがデフォルトで参照を使用していると思います。

ええ非常

+1

を試してみてください? – Lodybo

+1

私のサービス。私はコードを完了します:) – acostela

+0

ajaxの呼び出しのための$ httpを含める –

答えて

1

、ありがとうございました。コントローラー変数を参照しています。これを避けるにはangular copyを使用してください。あなたのサービスやあなたのコントローラーをself` `です。この

function getAll(){ 
 
    return self.Api.get('/myData').then(function(data){ 
 
     self.data = data; 
 
     var retdata={}; 
 
     angular.copy(data, retdata) 
 
     return retdata; 
 
    }) 
 
}

+0

または私はself.dataの代わりに直接データを返すことができます。私が間違っている? – acostela

+0

nope ... self.dataには同じデータ参照があります:) –

関連する問題