0

所以,我是angularjs的新手。我想使用MVC結構。所以,我在考慮將php的響應存儲在我的服務中,然後在我的控制器中使用它們。在angularjs服務中存儲php響應,然後讓它們進入控制器

服務:

(function() { 
    angular.module('dataService').service("incidentService", function ($http) { 
    var Data = []; 

    return ({ 
     getData: __getData 
    }); 


    function __getData() { 
     return Data; 
    } 

    function __setData($http, $q) { 
     var defer = $q.defer(); 
     $http.get('PHP/NAME.php',{cache : 'true'}). 
     success(function(data){ 
      Data = data; 
      console.log(Data); 
      defer.resolve(data); 
      defer.promise.then(function(data){ 
       Data = data; 
       console.log(Data); 
      }); 
     }); 
    } 
})})(); 

控制器:

(function() { 

angular.module('app') 
    .controller('Ctrl', Ctrl); 

/** @ngInject */ 
function Ctrl($scope, $http, $q,baConfig, incidentService) { 

    incidentService.setData($http,$q) 

    var DataSet = incidentService.getData(); 
    console.log(DataSet); 
} 
})(); 

通過這樣做,問題是當我服務的數據陣列更新我的數據集沒有更新。我知道我們可以向控制器返回一個延遲承諾來獲取數據,但是我們可以首先在服務中設置數據,然後使用get方法來使用它們?

+0

你能後的服務和控制器的整個定義獲取數據。在上面的代碼中有一些基本的缺陷,最好看到它。 –

+0

另外,不確定你正在使用什麼版本的Angular,但成功已被棄用。然後就像我有以下使用。 –

回答

0

好吧,我認爲這個問題不起作用的最大問題是因爲您將由$ http調用返回的數據分配給nData而不僅僅是Data。

下一個問題是沒有在服務上定義的getMonthlyData方法。

這就是說,這看起來過於複雜。

您的服務應該看起來更像是這樣的:

(function() { 
    angular.module('dataService').service("incidentService", function ($http,$q) { 
    var service  
    service.getData = __getData() 
    return service 

    function __getData() { 
     if (!service.Data) { 
     return $http.get('PHP/NAME.php',{cache : 'true'}).then(function(data) { 
      service.Data = data 
      return $q.when(service.Data) 
     })} 
     else { 
      return $q.when(service.Data) 
     } 
    } 
})})(); 

然後在您的控制器,你只需通過incidentService.getData()

+0

非常感謝。 getMonthlyData()是一個錯字。它應該是getData()。我仍然有一個問題。我應該如何存儲我在服務中獲得的數據。 –

+0

我將它存儲在data屬性中。返回$ q.when(service.Data)在隨後的調用中使用緩存的數據。在兩種情況下,它都包含在承諾中,因此您可以在控制器中使用incidentService.getData()。then(...)來引用它,或者在知道服務必須被調用的實例中,可以簡單地引用incidentService 。數據。 –

+0

謝謝。如果我想在我的服務中存儲多個陣列呢? –

相關問題