3

我正在構建一個簡單的控制器,其中還包含一項服務。該服務返回一個json。現在,我的問題是,當我通過控制器調用請求函數並打印結果時,我得到所有對象兩次。與控制器通話時獲得兩次結果

所以這是我的代碼現在:

angular.module('clientApp') 
    .factory('RequestService', ['$http', function($http){ 

     function getData() { 
      return $http.get('../../mockdata/data.json') 
     } 

     return { 
      getData: getData 
     }; 
    }]) 

    .controller('MainCtrl', ['RequestService', function(RequestService) { 

     var data = []; 

     RequestService.getData() 
      .success(function(allData) { 
       data = allData[0]; 
       console.log(allData) 
      }) 

    }]); 

JSON:http://pastebin.com/dTcNDQeA

我想,這個問題必須在某處周圍.success,但我不能老是找出原因明確。

我的解決方案:最後,當我在控制器中的服務調用周圍封裝一個函數時,它工作得很好。仍然搞清楚,爲什麼。

+1

有趣。我敢打賭,控制器正在初始化兩次。如果你把'console.log('hi')'放在控制器中,它會調用兩次嗎? – user2954587

+0

是真的!一段時間後,固定它:) – threxx

回答

2

儘量不要從服務返回任何東西。

.service('RequestService', ['$http', function($http){ 
     this.getData = function() { 
      return $http.get('../../mockdata/data.json') 
     } 

    }]) 

    // controller 

    RequestService.getData().success(function(data){ 
     $scope.data = data; 
    }) 

要只調用服務一次,你可以看到這example

+0

哎,如果我刪除這條線,我得到以下錯誤:類型錯誤:RequestService.getData不是一個函數 在新 threxx

+0

@threxx對不起!更新了答案。需要在服務上設置功能。 – user2954587

+0

仍然得到這個錯誤:this.getData不是一個函數 – threxx

1

試試這個

angular.module('clientApp') 
.service('RequestService', ['$http', function($http){ 

    var getData = function (handler) { 
     $http.get('../../mockdata/data.json').success(handler) 
    } 

    return { 
     getData: getData 
    }; 
}]) 

.controller('MainCtrl', ['RequestService', function(RequestService) { 

    var data = []; 

    RequestService.getData(function(allData) { 
      data = allData[0]; 
      console.log(allData) 
     }); 

}]); 
+0

當我這樣做,我還是會得到雙倍的結果。那個超級奇怪 – threxx

+0

你確定你的json文件只有一次嗎? – Neil

+0

這是我的json:http://pastebin.com/dTcNDQeA – threxx

0

,好像它是一個工廠,您已經定義爲您服務。

嘗試,要麼:

變化.service.factory

或:

this.getData = function() { ... }

(如@ user2954587說)

+0

試過了,出廠時還是得到了雙倍的結果 – threxx

0

理想的情況下,它應該返回一個對象。可能是你從後端得到的JSON有問題

+0

我我寫我自己,它只有四個條目,所以不認爲問題是與JSON – threxx