JavaScript承诺和this关键字
给定以下JS,如何设置JavaScript承诺和this关键字,javascript,angularjs,Javascript,Angularjs,给定以下JS,如何设置PlateCheck对象的message属性 var plateCheck = { plateNumber: '', message: '', alertClass: '', checkPlate: function (plateNumber) { PlateCheckService.checkPlate(plateNumber).then(function (response) {
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!!非常感谢!