我是JS和TypeScript的新手,我只是想检查自己。他是我的控制者:
class DefectListController implements IDefectListModel {
itemId: string;
defects: any[];
static $inject = ['$stateParams', 'defectResource'];
constructor($stateParams: any, defectResource: any) {
this.itemId = $stateParams.itemid;
// defects
defectResource.defectsByItemId($stateParams.itemid).then(function (data) {
this.defects = data;
});
}
}
在这种情况下,我的视图中有itemId
变量,但我没有defects
变量。我认为原因是this
是承诺中的Window
。
所以我修复了这样的代码(现在它正在运行):
class DefectListController implements IDefectListModel {
itemId: string;
defects: any[];
static $inject = ['$stateParams', 'defectResource'];
constructor($stateParams: any, defectResource: any) {
var self = this;
this.itemId = $stateParams.itemid;
// defects
defectResource.defectsByItemId($stateParams.itemid).then(function (data) {
self.defects = data;
});
}
}
我只是想知道这是一个很好的解决方案吗?或者可能有更好的方法来做到这一点?
答案 0 :(得分:4)
我只是想知道这是一个很好的解决方案吗?或者可能有更好的方法来做到这一点?
这是一个很好的解决方案。更好的方法是使用箭头功能:
// defects
defectResource.defectsByItemId($stateParams.itemid).then((data) => {
this.defects = data;
});
有关TypeScript中箭头函数的更多信息:https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html