我有以下控制器:
class DemandCtrl {
constructor(ChartDataService) {
this.ChartDataService = ChartDataService;
this.dataa = {
from: 'test1',
to: 'test2'
};
}
$onInit() {
getData.call(null, this);
}
}
function getData(DemandCtrl) {
debugger;
DemandCtrl.ChartDataService.getData().then(result => {
DemandCtrl.result = result.data;
getChart(result.data);
}).catch((e) => {
console.log(e);
});
}
... other methods/functions...
DemandCtrl.$inject = ['ChartDataService'];
export const Demand = {
bindings: {
data: '<'
},
templateUrl: demandPageHtml,
controller: DemandCtrl
};
我想将dataa
中的数据作为参数提供给我的服务。
服务如下:
export default class ChartDataService {
constructor($http, authService) {
this.$http = $http;
this.authService = authService;
}
getData() {
return this.$http.get(`chartData?&fromDate=` + dataa.from + `&toDate=` + dataa.to)
.then(result => {
return result;
}).catch(() => {
return Promise.reject('Failed to access chart data ');
});
}
}
ChartDataService.$inject = ['$http', 'authService'];
我尝试过的是将dataa
作为参数提供给getData()
,但它表示未定义。可能我不是从控制器正确发送它们但我不知道该怎么做。
答案 0 :(得分:0)
在ChartDataService
服务中,只需返回http
请求,而不是展开承诺。
export default class ChartDataService {
constructor($http, authService) {
this.$http = $http;
this.authService = authService;
}
getData(dataa) {
return this.$http.get(`chartData?&fromDate=` + dataa.from + `&toDate=` + dataa.to)
}
}
现在传递这样的参数。
DemandCtrl.ChartDataService.getData(this.dataa).then(result => {
DemandCtrl.result = result.data;
getChart(result.data);
}).catch((e) => {
console.log(e);
});