2013-03-05 43 views
0

我正在使用AngularJS進行$ resource調用,以獲取JSON格式的一些值。 我的要求是,我發現需要形式的Javascript數組的模型元素:在AngularJS中將JSON元素轉換爲Javascript數組?

[ 
[1328983200000, 40], 
[1328983200000, 33], 
[1328983200000, 25], 
[1328983200000, 54], 
[1328983200000, 26], 
[1328983200000, 25] 
]; 

顯示在海軍報圖。 此信息包含在JSON如下:

{ 
"marks1":15, 
"marks2":20, 
"dailyMarks":{ 
"2013-02-27T07:25:35.000+0000":40, 
"2013-03-01T07:25:35.000+0000":33, 
"2013-02-26T07:25:35.000+0000":25, 
"2013-02-23T07:25:35.000+0000":54, 
"2013-03-03T10:12:59.000+0000":26, 
"2013-03-02T07:12:59.000+0000":25}, 
} 

其中「dailyMarks」包含我需要的元素。我可以「dailyMarks」轉換爲Javascript數組,但它似乎並沒有工作:(下面是我的控制器代碼)

function MyController($scope, $resource) { 

    var User = $resource('/marks/fetch?from=:from&to=:to', {from: inStartDate, to: inEndDate}, { 
     getAll: {method: 'GET', isArray: false} 
    }); 

    $scope.changeDate = function(fromDate, toDate) { 
     $scope.marks = User.getAll({from: fromDate, to: toDate}); 
    }; 
    var imarks = User.getAll(); 
    $scope.marks = imarks; 

    var list = imarks.dailyMarks, arr = []; 

    for (var key in list) { 
     arr.push([+new Date(key), list[key]]); 
    } 

    $scope.myModel = arr; 
}; 

我在做什麼錯?我在模型中得到空白的arr []。 :(:( 請指引我

回答

2

這裏的問題是,$resource服務是異步的,即使它的API可能表明,它是同步的這個回答有關於這個話題的詳細信息:。https://stackoverflow.com/a/11966512/1418796

你什麼應該做的是你的陣列後處理沿着這些線路移動到呼叫的成功回調到資源,東西:

function MyController($scope, $resource) { 

    var User = $resource('/marks/fetch?from=:from&to=:to', {from: inStartDate, to: inEndDate}, { 
     getAll: {method: 'GET', isArray: false} 
    }); 


    $scope.marks = User.getAll({from: fromDate, to: toDate}, function(marksFromServer){ 
     //post processing <-- goes HERE 
    } 
); 
}; 

其他句話 - 你不斷地重新定義控制器中的User資源,你應該移動它到工廠並將User注入您的控制器。

+0

有了我分享的代碼,我在$ scope.marks中獲得了價值,並且可以正確顯示它。這部分工作。但我沒有在「myModel」中得到任何答案爲什麼會這樣? – LittleLebowski 2013-03-05 09:54:15

+0

這與異步調用的問題完全相同。你有這樣的代碼:'var imarks = User.getAll();'它立即返回一個空數組。你需要在回調中進行處理。 – 2013-03-05 09:56:35

+0

哦,我明白了。得到它了。非常感謝真棒解釋。我已經花了差不多30分鐘的時間把我的大腦分開了,看看有什麼不對!非常感謝您的展示! :) – LittleLebowski 2013-03-05 10:00:25