gpt4 book ai didi

javascript - 如何修改 Backbone 同步期间生成的 URL,但仅限于特定请求

转载 作者:行者123 更新时间:2023-11-28 20:39:01 26 4
gpt4 key购买 nike

我想更改我的实体调用 destroy 时生成的 URL。我不想将 HTTP DELETE 写入/{Action}/{EntityID},而是发送/{Action}/{EntityID}/{SecondEntityID}。

item.destroy({
data: $.param({
playlistId: playlistId
}),
processData: true,
success: callback,
error: function (error) {
console.error(error);
}
});

我认为这样的东西可能会起作用,但它似乎没有附加任何额外的参数。如果我想扩展只是销毁 URL,我是否必须完整实现自己的同步方法?

最佳答案

当您调用 destroy 时,您可以通过在选项中传入 .url 属性来覆盖。由于我假设您希望对每个调用都执行此操作,因此您可以执行以下操作:

var MyModel = Backbone.Model.extend({
destroy: function(options) {
// Override URL
options || (options = {});
// You can put whatever you need here,
options.url = 'http://www.awesome.com/destroy/' + this.get('id') + '/' + this.get('secondaryId');

// Call Model.destroy().
// We are reusing the existing functionality from Backbone.Model.destroy().
Backbone.Model.prototype.destroy.apply(this, arguments);
}
});

var m= new MyModel({ id: 123, secondaryId: 456 });

// Note: You need to set 'id' in order for destroy() call to be successful.
m.destroy({
sucess: function() { console.log('good'); },
error: function() { console.log('bad'); }
});

如果您打开 Firebug 或 Chrome 开发工具,您应该会看到对 www.awesome.com 进行了 XHR/AJAX 调用。

既然您提到您想要在您拥有的所有实体上执行此操作,那么在这种情况下您可以做的是在您的应用程序中创建一个 BaseModel ,并让您的所有实体从它扩展.

无论如何,希望这对您有所帮助!

JSFiddle 用于此:http://jsfiddle.net/EwQaD/

关于javascript - 如何修改 Backbone 同步期间生成的 URL,但仅限于特定请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com