2015-10-26 95 views
0

我想在我收到數據並存儲它之後使用函數,我怎麼得不到我想要的結果以及我使用的代碼。在http請求後調用

有人可以提供一些關於我在做什麼錯的細節嗎?

我的代碼:

$http({ 
     method: 'GET', 
     url: 'JsonLocation' 
    }).then(
     function successCallback(response) { 
      // this callback will be called asynchronously 
      // when the response is available. 
      self.responseData = response.data; 
     }, 
     function errorCallback(response) { 
      // called asynchronously if an error occurs 
      // or server returns response with an error status. 
      console.log(response); 
     } 
    ).then(
     function completeCallback() { 
      // called when the http request is finished. 
      restyleData(); 
     } 
    ); 

當加載頁面時,一切都設在地方,我可以運行通過開發者選項restyleDate(),那麼它的工作原理。但是我只是想在加載完所有內容後纔開啓它,而不是手動完成。

+0

刪除第二個'.then'語句,並將你的'restyleData'方法放入你的'successCallback' –

+0

那麼它有什麼特殊的問題呢?這個函數做什麼? '我沒有得到想要的結果'並不是非常明確 – charlietfl

+0

@ChristopherMarshall這個函數似乎在所有數據都在頁面之前被調用。我認爲我的問題在於我在'restyle'之前處理來自角的ng-repeat。我需要在頁面上顯示所有數據後才能看到它。 – Marcel

回答

1

我會建議更改爲:

$http({ 
    method: 'GET', 
    url: 'JsonLocation' 
}).then(
    function successCallback(response) { 
     // this callback will be called asynchronously 
     // when the response is available. 
     self.responseData = response.data; 
     // restyle is called after you save the result 
     restyleData(); 
    }, 
    function errorCallback(response) { 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
     console.log(response); 
    } 
); 
0

使用catchfinally使用再經過。如果你做$scope.responseData = data,那麼可以在你的HTML中使用,並且數據會自動填充。所以在html中它看起來像{{responseData.description}}。如果你已經將自己定義爲:{{self.responseData.description}}

或者,你可以將你的$ http調用包裝在一個名爲restyleData的函數中,然後調用該函數(就像你一樣),它將顯示數據。

$http({ 
    method: 'GET', 
    url: 'JsonLocation' 
}).then(
    function successCallback(response) { 
     // this callback will be called asynchronously 
     // when the response is available. 
     self.responseData = response.data; 
    }) 
    .catch( 
    function errorCallback(response) { 
     // called asynchronously if an error occurs 
     // or server returns response with an error status. 
     console.log(response); 
    }) 
    .finally(
    function completeCallback() { 
     // called when the http request is finished. 
    }); 

restyleData();