Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript承诺和this关键字_Javascript_Angularjs - Fatal编程技术网

JavaScript承诺和this关键字

JavaScript承诺和this关键字,javascript,angularjs,Javascript,Angularjs,给定以下JS,如何设置PlateCheck对象的message属性 var plateCheck = { plateNumber: '', message: '', alertClass: '', checkPlate: function (plateNumber) { PlateCheckService.checkPlate(plateNumber).then(function (response) {

给定以下JS,如何设置
PlateCheck
对象的
message
属性

var plateCheck = {
        plateNumber: '',
        message: '',
        alertClass: '',
        checkPlate: function (plateNumber) {
            PlateCheckService.checkPlate(plateNumber).then(function (response) {
                var data = response.data;

                if (data.VehicleAtl !== null) {
                    this.message = "Hot!";
                    this.alertClass = 'alert-danger';
                } else {
                    this.message = "Plate #" + data.PlateNumber + " is clean.";
                    this.alertClass = 'alert-success';
                }
            });
        }
    };
编辑


PlateCheckService.checkPlate(plateNumber)
返回一个承诺…

这可能只是一个范围问题,但是通过调用
plateCheck.checkPlate(fooPlateNumber)
返回相同的对象可能就可以了

var plateCheck = {
        plateNumber: '',
        message: '',
        alertClass: '',
        checkPlate: function (plateNumber) {
            var me = this;
            PlateCheckService.checkPlate(plateNumber).then(function (response) {
                var data = response.data;
                me.plateNumber = plateNumber;
                if (data.VehicleAtl !== null) {
                    me.message = "Hot!";
                    me.alertClass = 'alert-danger';
                } else {
                    me.message = "Plate #" + data.PlateNumber + " is clean.";
                    me.alertClass = 'alert-success';
                }
            });
        }
    };
但也许您可以提取服务函数,以返回一个
plateCheck
对象

function checkPlate(plateNumber) {
    var plateCheck = {};
    plateCheck.plateNumber = plateNumber;
    PlateCheckService.checkPlate(plateNumber).then(function (response) {
        var data = response.data;
        if (data.VehicleAtl !== null) {
            plateCheck.message = "Hot!";
            plateCheck.alertClass = 'alert-danger';
        } else {
            plateCheck.message = "Plate #" + data.PlateNumber + " is clean.";
            plateCheck.alertClass = 'alert-success';
        }
    });
    return plateCheck;
}

为了澄清,您需要根据
检查牌
函数的响应设置
消息
属性?@cyripangilian-是。我还想了解如何将该功能提取到服务中,并将带有正确消息、警报类等的对象从promise返回给服务,然后返回给控制器。顺便说一句,我使用的是角度。是否
checkPlate
真的应该是
plateCheck
对象的属性?我想,
checkPlate
应该只是一个调用的函数<代码>变量_this=this并使用该变量设置对象的属性+答案是1!!非常感谢!