我在打字稿中有这个课程
class SlowQueriesController {
$http
constructor($http, $routeParams) {
this.$http = $http;
..... some other code ....
this.$http.get('/api/metrics/findByType/' + $routeParams.application + '/METER').then(response => {
this.meters = response.data;
for (var i = 0; i < this.meters.length; i++) {
fillInMeterData(this.meters[i]);
}
});
}
function fillInMeterData(meter) {
this.$http.get('/api/meterData/values/' + meter._id).then(response => {
... some code ...
});
}
}
我得到的问题是在我正在访问它的方法fillInMeterData中。$ http,这是未定义的。
知道我做错了什么。请原谅我对打字稿的浅薄知识,我还在学习。
答案 0 :(得分:0)
在typescript中,类方法不应包含function
关键字,编译器应该抱怨你使用它,比如this playground of a stripped version of your code:
class SlowQueriesController {
constructor($http, $routeParams) { }
function fillInMeterData(meter) {} // ERROR: Unexpected token. A constructor, method, accessor, or property was expected.
}
您的代码应如下所示:
class SlowQueriesController {
$http
constructor($http, $routeParams) {
this.$http = $http;
..... some other code ....
this.$http.get('/api/metrics/findByType/' + $routeParams.application + '/METER').then(response => {
this.meters = response.data;
for (var i = 0; i < this.meters.length; i++) {
this.fillInMeterData(this.meters[i]);
}
});
}
fillInMeterData(meter) {
this.$http.get('/api/meterData/values/' + meter._id).then(response => {
... some code ...
});
}
}
差异在于:
function
方法fillInMeterData
个关键字
this.fillInMeterData
答案 1 :(得分:0)
我发现了问题,问题是fillInMeterData之前的方法没有被正确声明(它们被声明为'function methodName()')
一旦我修复了类中的所有方法以遵循语法一切正常。