gpt4 book ai didi

javascript - 在 AngularJS 中将 JSON 元素转换为 Javascript 数组?

转载 作者:行者123 更新时间:2023-12-02 18:57:10 25 4
gpt4 key购买 nike

我正在使用 AngularJS 进行 $resource 调用以获取 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数组,但它似乎不起作用:(下面是我的 Controller 代码)

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[] 。 :( :(请指导我。

最佳答案

这里的问题是 $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
}
);
};

其他备注 - 您不断地在 Controller 中重新定义 User 资源,您应该将其移动到工厂并将 User 注入(inject)到您的 Controller 中。

关于javascript - 在 AngularJS 中将 JSON 元素转换为 Javascript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15219880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com