我有这种服务结构:
export default class ChartDataService {
constructor($http, authService) {
this.$http = $http;
this.authService = authService;
}
getData(dataa) {
//do something
}
ChartDataService.$inject = ['$http', 'authService'];
控制器结构:
class DemandCtrl {
constructor(ChartDataService) {
this.ChartDataService = ChartDataService;
this.dataa = {
from: '10/01/2017',
to: '10/03/2017'
};
}
$onInit() {
getData.call(null, this);
}
update() {
console.log('show something');
DemandCtrl.ChartDataService.getData(this.dataa);
}
}
...
DemandCtrl.$inject = ['ChartDataService'];
export const Demand = {
bindings: {
data: '<'
},
templateUrl: demandPageHtml,
controller: DemandCtrl
};
我想从服务中调用update()
getData()
函数。无论我如何尝试getData()
,ChartDataService.getData(this.dataa)
或DemandCtrl.ChartDataService.getData(this.dataa)
,我都会遇到同样的错误:未定义。
我该如何解决这个问题?
答案 0 :(得分:0)
答案是使用.call()
中的$onInit()
。
在这种特殊情况下,update()
的内容必须是:
update() {
getData.call(null, this);
}