加载 JSON 以显示数据,使用 ng-repeat {ANGULAR.JS}
Load JSON to display data, using ng-repeat {ANGULAR.JS}
我的Html:
<div class="graph-display" ng-controller="jsonServerBox">
<div class="bar-chart-box" ng-repeat="module in ocw.modules">
<canvas class="chart chart-bar" data="{{module.data}}" labels="{{module.labels}}" series="{{module.series}}"></canvas>
</div>
</div>
我的 JS:
app.controller('jsonServerBox', function($scope, $http) {
var json = $http.get('serverbox.json').then(function(res){
return res.data;
});
$scope.ocw = json;
});
图表没有显示,不知道为什么?我在控制台中也没有收到任何错误。
更新:我的 JSON 文件内容
[{"modules":[
{
"series":"SeriesA",
"data":["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"],
"labels":["01", "02", "03", "04", "05", "06", "07","08","09","10"]
},
{
"series":"SeriesB",
"data":["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"],
"labels":["01", "02", "03", "04", "05", "06", "07","08","09","10"]
}
]}
]
控制台日志:
modules: Array[2]0: Objectdata: Array[10]0: "90"1: "99"2: "80"3: "91"4: "76"5: "75"6: "60"7: "67"8: "59"9: "55"length: 10__proto__: Array[0]labels: Array[10]0: "01"1: "02"2: "03"3: "04"4: "05"5: "06"6: "07"7: "08"8: "09"9: "10"length: 10__proto__: Array[0]series: "SeriesA"__proto__: Object1: Objectdata: Array[10]0: "90"1: "99"2: "80"3: "91"4: "76"5: "75"6: "60"7: "67"8: "59"9: "55"length: 10__proto__: Array[0]labels: Array[10]0: "01"1: "02"2: "03"3: "04"4: "05"5: "06"6: "07"7: "08"8: "09"9: "10"length: 10__proto__: Array[0]series: "SeriesB"
您的代码存在的问题是 json
是 Promise 对象,而不是 AJAX 调用返回的数据。你的问题也有 "returning from AJAX request" 方面。确保您了解相关问题,查看 this 非常受欢迎的问题。
在 Angular 中设置使用 AJAX 请求检索的范围数据的正确方法是在回调中执行:
app.controller('jsonServerBox', function ($scope, $http) {
$http.get('serverbox.json').then(function (res) {
$scope.ocw = res.data;
});
});
在你的情况下 json
变量什么都不是,但它包含 promise 对象。
并且 Promise 应始终使用 .then
解析
代码
var json = $http.get('serverbox.json').then(function(res) {
return res.data;
});
json.then(
//success callback
function(data) {
$scope.ocw = data
},
//error callback
function() {
//error handling
})
});
这对你有帮助。
谢谢。
我的Html:
<div class="graph-display" ng-controller="jsonServerBox">
<div class="bar-chart-box" ng-repeat="module in ocw.modules">
<canvas class="chart chart-bar" data="{{module.data}}" labels="{{module.labels}}" series="{{module.series}}"></canvas>
</div>
</div>
我的 JS:
app.controller('jsonServerBox', function($scope, $http) {
var json = $http.get('serverbox.json').then(function(res){
return res.data;
});
$scope.ocw = json;
});
图表没有显示,不知道为什么?我在控制台中也没有收到任何错误。
更新:我的 JSON 文件内容
[{"modules":[
{
"series":"SeriesA",
"data":["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"],
"labels":["01", "02", "03", "04", "05", "06", "07","08","09","10"]
},
{
"series":"SeriesB",
"data":["90", "99", "80", "91", "76", "75", "60", "67", "59", "55"],
"labels":["01", "02", "03", "04", "05", "06", "07","08","09","10"]
}
]}
]
控制台日志:
modules: Array[2]0: Objectdata: Array[10]0: "90"1: "99"2: "80"3: "91"4: "76"5: "75"6: "60"7: "67"8: "59"9: "55"length: 10__proto__: Array[0]labels: Array[10]0: "01"1: "02"2: "03"3: "04"4: "05"5: "06"6: "07"7: "08"8: "09"9: "10"length: 10__proto__: Array[0]series: "SeriesA"__proto__: Object1: Objectdata: Array[10]0: "90"1: "99"2: "80"3: "91"4: "76"5: "75"6: "60"7: "67"8: "59"9: "55"length: 10__proto__: Array[0]labels: Array[10]0: "01"1: "02"2: "03"3: "04"4: "05"5: "06"6: "07"7: "08"8: "09"9: "10"length: 10__proto__: Array[0]series: "SeriesB"
您的代码存在的问题是 json
是 Promise 对象,而不是 AJAX 调用返回的数据。你的问题也有 "returning from AJAX request" 方面。确保您了解相关问题,查看 this 非常受欢迎的问题。
在 Angular 中设置使用 AJAX 请求检索的范围数据的正确方法是在回调中执行:
app.controller('jsonServerBox', function ($scope, $http) {
$http.get('serverbox.json').then(function (res) {
$scope.ocw = res.data;
});
});
在你的情况下 json
变量什么都不是,但它包含 promise 对象。
并且 Promise 应始终使用 .then
代码
var json = $http.get('serverbox.json').then(function(res) {
return res.data;
});
json.then(
//success callback
function(data) {
$scope.ocw = data
},
//error callback
function() {
//error handling
})
});
这对你有帮助。
谢谢。