Angularjs 控制器中的绑定变量';s的承诺

Angularjs 控制器中的绑定变量';s的承诺,angularjs,typescript,Angularjs,Typescript,我是JS和TypeScript的新手,我只是想检查一下自己。他是我的控球手: class DefectListController implements IDefectListModel { itemId: string; defects: any[]; static $inject = ['$stateParams', 'defectResource']; constructor($stateParams: any, defectResource: any)

我是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
    defectResource.defectsByItemId($stateParams.itemid).then((data) => {
        this.defects = data;
    });
有关TypeScript中箭头函数的详细信息:

我只是想知道这是个好办法吗?或者有没有更好的方法

这是一个很好的解决方案。更好的方法是使用箭头函数:

  // defects
    defectResource.defectsByItemId($stateParams.itemid).then((data) => {
        this.defects = data;
    });

关于TypeScript中箭头函数的更多信息:

我不知道TypeScript,但您也应该能够使用。这里有更多信息~我不知道打字脚本,但你也应该能够使用。更多~