根據評論,它看起來像你已經解決了這個問題。然而,我並不完全相信你會從那個解決方案中獲得你期望的確切行爲。
如果您只想使用同步功能,我認爲您可以通過其他方式解決您的問題。根據Backbone documentation, Backbone.sync使用jquery.ajax並返回一個jqXHR對象,而不是來自調用的實際響應數據。更不用說響應數據仍然不會被格式化爲Backbone.Model。但是,您可以簡單地使用.done和.fail,就像使用ajax請求一樣,並在那裏執行您的model.set()
。
...
async createModel(model) {
await Backbone.sync('create'/*or 'update' or 'delete'*/, model)
.done(function(data) {
var newModel = new Model(data);
[MODEL LOCATION].set(newModel);
})
.fail(function(data) {
console.log('Error: ' + data.status);
});
}
...
但是,你可以這樣做同樣的事情的另一種方式是,它看起來像Backbone.sync function需要第三個參數[選項]和基於關閉它看起來像,它需要的選項documentation再次是成功和錯誤回調。所以,如果你使用這種模式會是這樣的:
...
async createModel(model) {
await Backbone.sync(
'create', //or 'update' or 'delete'
model,
{
success: function(data) {
var newModel = new Model(data);
[MODEL LOCATION].set(newModel);
},
error: function(data) {
console.log('Error: ' + data.status);
}
}
);
}
...
在所有情況下的數據參數是來自於REST調用迴響應數據。
無論如何,希望這有助於未來。
我找到了解決方法:'model.set(await Backbone.sync('create',model))' – mqklin
你應該讓你的服務器在任何http方法上返回相同的資源,而不僅僅是GET –