2

次の JSの場合、オブジェクトのmessageプロパティを設定するにはどうすればよいですか?PlateCheck

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)約束を返す...

4

1 に答える 1

3

これは単なるスコープの問題かもしれませんが、呼び出しによって同じオブジェクトを返すには、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;
}
于 2013-10-27T20:30:07.447 に答える