Angularjs 在Angular js中从3种不同类型的json获取数据
我有3个不同的json文件Angularjs 在Angular js中从3种不同类型的json获取数据,angularjs,Angularjs,我有3个不同的json文件chart1.json、chart2.json、chart3.json。所有JSON都有不同的数据结构,JSON所需的关键之一是分别为“时间戳”、“fieldname”和“statename”,需要放入一个名为“category”的变量中,该变量将在html上查看3个不同的图表。就像3个不同的图表将有3个类别“timestamp”,fieldname“和州名”。 我需要用一个图表控制器 对这些json文件进行3次不同的调用是唯一的方法吗 var model = {}
chart1.json、chart2.json、chart3.json
。所有JSON都有不同的数据结构,JSON所需的关键之一是分别为“时间戳”、“fieldname”和“statename”
,需要放入一个名为“category”的变量中,该变量将在html上查看3个不同的图表。就像3个不同的图表将有3个类别“timestamp”,fieldname“
和州名”
。
我需要用一个图表控制器
对这些json文件进行3次不同的调用是唯一的方法吗
var model = {};
angular.module('yourApp', [])
.run(function($http) {
$http.get("chart1.json").success(function(data) {
model.chart1 = data;
});
$http.get("chart2.json").success(function(data) {
model.chart2 = data;
});
$http.get("chart3.json").success(function(data) {
model.chart3 = data;
});
})
.controller('ChartCtrl', ['$scope', '$http', function($scope, $http) {
$scope.someCharts = model;
}]);
非常确定3个http响应是唯一的方法,除非您有一个服务器和数据库可以为您解析JSON或其他什么东西。SuperVeetz将这些调用放在视图的resolve函数中不是更好吗 解决
resolve: {
'init':function (initService) {
return initService.init();
}
在哪里
InitService保存以下请求:
module.factory('initService', function($q, $http) {
var request = $q.defer();
return {
init: function(option) {
chart1 = $http.get('path/to/json/');
chart2 = $http.get('path/to/json/');
chart3 = $http.get('path/to/json/');
$q.all([chart1, chart2, chart3])
.then(function(responses) {
request.resolve(responses);
}
}
}
ctrl:
module.controller('ChartCtrl', ['$scope', 'init', function($scope, init) {
$scope.someCharts = init;
}]);
如果您想进行一次调用,则需要在服务器上创建一个函数,在您使用特定的api调用请求时,该函数将三个JSON文件合并(重新构造)为一个
$http.get('/api/getThreeInOne').then(function(data){ return data;}
请共享您的代码?我总是不知道何时使用$resolve或$http。你能给我提供一些我能理解实际差异的参考吗?在渲染视图/控制器运行之前,解析函数将被调用。因此,如果要处理数据,应将其加载到resolve函数中。这样,只有在获取数据时,控制器才会启动。在控制器内,解析函数中的数据可用解析对象中提供的名称。这里是“init”。