2014-08-31 38 views
1

我得到的數據回從資源這樣的:

var result = someService.getData(); 
result.$promise.then(function() { 
    console.log(result); 
}); 

這給了我以下結果:

1: "200" 
2: "1810" 
$promise: Object 
$resolved: true 
__proto__: f 

我需要把這個數據在JavaScript數組,看起來像這樣:

[[1, 200], [2, 1810]] 

我試圖做到這一點在forEach

var data = []; 
angular.forEach(monthly, function(value, key) { 
    var tmp = []; 
    tmp[0] = key; 
    tmp[1] = value; 

    data.push(tmp); 
}); 

但是然後$promise$resolved屬性也出現在foreach中。這也看起來不是做這件事的最好方法。

我應該如何以正確的方式做到這一點?

+0

您是否嘗試過直接通過你的回調函數'someService.getData()'? – axelduch 2014-08-31 18:56:38

+0

@aduch不確定你的意思?我在我的控制器內部調用'someService.getData()'並且'getData()'使用'$ resource'來調用Web服務。 '$ resource'總是返回'$ promise',這就是'getData()'返回的結果。根據你的情況,我需要改變什麼? – Vivendi 2014-08-31 19:02:23

回答

3

簡短的回答是電話.toJSON() - 這樣做會剝離$ promise和$ resolved屬性,並允許您像使用舊版本的Angular一樣正確使用angular.forEach

喜歡的東西:

var result = someService.getData(); 
result.$promise.then(function(value) { 
    console.log(value.toJSON());//will strip the annoying properties, use here 
}); 
+0

好的,很高興知道像我現在使用的「自動解包」已被棄用。但是你的方法仍然給我一個具有'$ promise'和'$ resolved'屬性的對象。所以我仍然堅持原來的問題。 – Vivendi 2014-08-31 19:31:11

+0

@Vivendi在我給答案添加說明之前,我想確保 - 您必須支持哪些瀏覽器?我也可以假設$資源? – 2014-08-31 19:32:34

+0

@BenjaminGruenbaum:很顯然OP使用'$ resource',所以沒有自動解包。你的陳述是誤導性的,因爲'$ resource'立即返回一個空數組(或對象)是**不**棄用(除非我錯過了某些東西)。 – gkalpak 2014-08-31 19:44:31