0
私はいくつかのデータを表示するためにサービスchartFactory.chartData
プロパティを使用しているコントローラを持っています。問題は、chartFactory.chartData
関数がバックエンドからデータを返す時間がある前に、ファクトリがオブジェクトを返すため、プロパティが定義されていないということです。angularJSサービスオブジェクトのプロパティが定義されていません
これは非同期の問題だと私は理解していますが、ファクトリとコントローラ間でどのように処理するかはわかりません。
chartFactory.js
app.factory('chartFactory', ['$http', '$interval', function($http, $interval) {
var service = {
get chartData() {
$http.get('/portfolio/get-chart-data')
.then(function(response) {
console.log(response.data, 'response data') //logging after undefined message
return response.data
})
}
}
return service
}])
chartController.js
app.controller('chartCtrl', function($scope, $timeout, $http, chartFactory) {
$scope.chartData = chartFactory
$scope.height_chart = window.innerHeight * 0.4
$scope.labels = chartFactory.chartData[0]; //undefined
$scope.series = chartFactory.chartData['GDAX Value']; //undefined
$scope.data = [
chartFactory.chartData[1] //undefined
];
$scope.onClick = function(points, evt) {
console.log(points, evt);
};
$scope.datasetOverride = [{
yAxisID: 'y-axis-1'
}];
$scope.options = {
responsive: true,
maintainAspectRatio: false,
scales: {
yAxes: [{
id: 'y-axis-1',
// type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: false,
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return '$' + value;
}
}
}
}],
xAxes: [{
display: false
}]
}
}
})
これは、1ページのアプリケーションのタブを切り替えると、チャートが毎回リロードされるため、これが最適な解決策ではないと私は思います。私はコントローラのデータが工場データにバインドされているソリューションを希望します。工場データが変更された場合、コントローラのデータはゼロからロードせずに変更されます。それは理にかなっていますか? – chuckieDub
これは私が求めていることです...私に見せてもらえますか? pls – chuckieDub
@chuckieDub答えを確認する – Sajeetharan