在AngularJS中将JSON元素转换为Javascript数组?
我使用AngularJS进行$resource调用,以获取JSON格式的一些值。 我的要求是我有一个模型元素,它需要一个如下形式的Javascript数组:在AngularJS中将JSON元素转换为Javascript数组?,javascript,json,angularjs,javascript-framework,Javascript,Json,Angularjs,Javascript Framework,我使用AngularJS进行$resource调用,以获取JSON格式的一些值。 我的要求是我有一个模型元素,它需要一个如下形式的Javascript数组: [ [1328983200000, 40], [1328983200000, 33], [1328983200000, 25], [1328983200000, 54], [1328983200000, 26], [1328983200000, 25] ]; 在Flot图表中显示。 此信息包含在JSON中,如下所示: { "marks
[
[1328983200000, 40],
[1328983200000, 33],
[1328983200000, 25],
[1328983200000, 54],
[1328983200000, 26],
[1328983200000, 25]
];
在Flot图表中显示。
此信息包含在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数组,但它似乎不起作用:(下面是我的控制器代码)
我做错了什么?我在模型中得到空白arr[]:( :(
请指导我。这里的问题是,
$resource
服务是异步的,即使其API可能表明它是同步的。此答案包含有关此主题的更多详细信息:
您应该做的是将数组后处理移动到对资源调用的成功回调,大致如下:
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
}
);
};
函数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},函数(marksFromServer){
//使用我共享的代码进行后期处理后,我在$scope.marks中获得了值,并且可以正确显示它。该部分正在工作。但是我在“myModel”中没有得到任何东西为什么会这样?这与异步调用的问题完全相同。您得到了以下代码:var imarks=User.getAll();
它会立即返回空数组。你需要在回调中进行处理。哦……我明白了。明白了。非常感谢你的精彩解释。我已经花了将近30分钟绞尽脑汁思考了什么问题!非常感谢你指明了方向!!:)出于某种奇怪的原因,弗洛特图表没有自己绘制出来(当我提供静态数据时,它起作用。
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
}
);
};