2017-04-20 132 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

是'self'您的服務或您的控制器? – Lodybo

+1

我的服務。我將完成代碼:) – acostela

+0

包括$ http ajax調用 –

回答

1

是的。你指的是控制器變量。使用angular copy來避免這種情況。試試這個

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具有相同的數據引用:) –