backbone.js中.save()的响应/请求对象

时间:2015-02-04 11:15:15

标签: javascript ajax backbone.js promise jquery-deferred

在下面的函数中你可以看到.save()部分没有响应对象,我想知道如何声明一个响应对象来获取返回值。

        $.when(
            _this.formWebsitePart.save({
                success: function () {
                    console.log("website saved")
                    _this.formWebsitePart.isSaved = true;
                }
            }),
            _this.formAddressPart.save({
                success: function () {
                    console.log("address saved")
                }
            })
        ).then(function () {
                _this.signupSuccess();
            }
        )

1 个答案:

答案 0 :(得分:0)

如果你的.save()真正返回了一个jqXHR对象,那么你可能想要这样的东西:

_this.saveFormParts = function() {
    if(!_this.formWebsitePart.jqXHR) {
        _this.formWebsitePart.jqXHR = _this.formWebsitePart.save().then(function(response) {
            console.log("website saved");
            return response || null;
        });
    }
    if(!_this.formAddressPart.jqXHR) {
        _this.formAddressPart.jqXHR = _this.formAddressPart.save().then(function(response) {
            console.log("address saved");
            return response || null;
        });
    }
    return $.when(
        _this.formWebsitePart.jqXHR,
        _this.formAddressPart.jqXHR
    );
}

并且,在适当的地方:

_this.saveFormParts().then(_this.signupSuccess); // or similar

如果.save()未返回jqXHR对象,则需要执行以下操作之一:

  • 撰写.save()(首选)
  • 的宣传版
  • 撰写.saveFormParts()
  • 的宣传版

宣传传统的回调界面 - try this