Angular JS 使用 JSON 数据
Angular JS Working with JSON Data
我正在使用 https://github.com/bouil/angular-google-chart 进行数据可视化。
我需要从 JSON 文件中获取数据。
下面是负责在 html 页面上显示数据的片段:
$scope.chartObject.data = {"cols": [
{id: "t", label: "Topping", type: "string"},
{id: "s", label: "Slices", type: "number"}
], "rows": [
{c: [
{v: "Mushrooms"},
{v: 3},
]},
{c: $scope.onions},
{c: [
{v: "Olives"},
{v: 31}
]},
{c: [
{v: "Zucchini"},
{v: 1},
]},
{c: [
{v: "Pepperoni"},
{v: 2},
]}
]};
我改成了:
$scope.chartObject.data = function(){
$http.get('data.json').always(function(response) {
return response.data;
});
}
我的控制台抛出以下错误:
Object {id: "google-visualization-errors-0", message: "Table has no columns.", detailedMessage: "", options: Object}
我的 data.json
文件如下所示:
{
"cols": [
{"id":"","label":"Topping","pattern":"","type":"string"},
{"id":"","label":"Slices","pattern":"","type":"number"}
],
"rows": [
{"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
{"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
]
}
注意: 文件路径在这里不是问题。
把你的代码改成这个
$scope.chartObject = {};
$scope.chartObject.data = {}
$http.get('data.json').then(function(response) {
$scope.chartObject.data = response.data;
});
您将 $http 请求响应设置为 $scope 对象的方式有问题。将其更改为:
$scope.chartObject.data = {}
$http.get('data.json').then(function(response) {
$scope.chartObject.data = response.data;
});
这是因为你不能直接将 Promise($http.get returns 的对象)设置为你范围内的对象,因为它是异步的。
用这个。此外,您还需要在控制器上添加 $http 依赖项。
$http.get(url).success(function(data){
return data;
}).error(function(data){
})
最好使用工厂然后从任何地方使用它。
服务
app.factory('dataService', function($http){
var getData = function(){
return $http.get('data.json');
}
return {
getData: getData
}
});
在使用它之前不要忘记在你的控制器中添加服务依赖。
控制器代码
$scope.chartObject = {}; //do this if chartObject is not initialized
dataService.getData().then(function(response) {
$scope.chartObject.data = response.data;
});
希望更好的代码适用于 you.Thanks。
我正在使用 https://github.com/bouil/angular-google-chart 进行数据可视化。
我需要从 JSON 文件中获取数据。
下面是负责在 html 页面上显示数据的片段:
$scope.chartObject.data = {"cols": [
{id: "t", label: "Topping", type: "string"},
{id: "s", label: "Slices", type: "number"}
], "rows": [
{c: [
{v: "Mushrooms"},
{v: 3},
]},
{c: $scope.onions},
{c: [
{v: "Olives"},
{v: 31}
]},
{c: [
{v: "Zucchini"},
{v: 1},
]},
{c: [
{v: "Pepperoni"},
{v: 2},
]}
]};
我改成了:
$scope.chartObject.data = function(){
$http.get('data.json').always(function(response) {
return response.data;
});
}
我的控制台抛出以下错误:
Object {id: "google-visualization-errors-0", message: "Table has no columns.", detailedMessage: "", options: Object}
我的 data.json
文件如下所示:
{
"cols": [
{"id":"","label":"Topping","pattern":"","type":"string"},
{"id":"","label":"Slices","pattern":"","type":"number"}
],
"rows": [
{"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
{"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
]
}
注意: 文件路径在这里不是问题。
把你的代码改成这个
$scope.chartObject = {};
$scope.chartObject.data = {}
$http.get('data.json').then(function(response) {
$scope.chartObject.data = response.data;
});
您将 $http 请求响应设置为 $scope 对象的方式有问题。将其更改为:
$scope.chartObject.data = {}
$http.get('data.json').then(function(response) {
$scope.chartObject.data = response.data;
});
这是因为你不能直接将 Promise($http.get returns 的对象)设置为你范围内的对象,因为它是异步的。
用这个。此外,您还需要在控制器上添加 $http 依赖项。
$http.get(url).success(function(data){
return data;
}).error(function(data){
})
最好使用工厂然后从任何地方使用它。
服务
app.factory('dataService', function($http){
var getData = function(){
return $http.get('data.json');
}
return {
getData: getData
}
});
在使用它之前不要忘记在你的控制器中添加服务依赖。
控制器代码
$scope.chartObject = {}; //do this if chartObject is not initialized
dataService.getData().then(function(response) {
$scope.chartObject.data = response.data;
});
希望更好的代码适用于 you.Thanks。