使用 Backbone.JS,我能够成功创建新模型并将它们保存到服务器。他们成功地进行了 ajax 调用,并且订阅的 UI 元素相应地更新了。然后我遇到的问题是我不知道新创建的对象的 ID。
我可以在创建调用的响应 header 中看到,服务器正在返回一个位置 header ,例如:Location https://localhost/rest/beta/mobile/footer/OTo3Njow
最后一个参数是新创建的 ID。
如何在不覆盖 backbone.sync 的情况下获取此 ID?如果我必须覆盖 backbone.sync,最干净的方法是什么?
更新 看起来我的组织正在使用旧的 Backbone.js,其中模型的解析方法不提供对 XHR 对象的引用,否则我可以捕获 ID 并在那里进行分配。
最佳答案
服务器应该发回一个 JSON 对象,其中包含模型的 id
,以及它想要更新的任何其他属性。如果是,Backbone 将自动获取 ID。
如果这不是一个选项,您应该覆盖 Backbone.sync
,因为这样您的 API(它在位置 header 而不是响应主体中传达新 id)不符合 Backbone支持开箱即用。
如果服务器已经这样做了,而你只是想获得 id,这取决于谁需要知道。如果是调用model.save()
的代码,那么可以传入成功回调:
model.save({}, {
success: function(){
// do something with model.id
}
});
如果模型本身需要在获取 id 时得到通知,可以使用初始化器:
var MyModel = Backbone.Model.extend({
initialize: function(){
this.bind("change:id", function(){
// …
});
}
});
关于javascript - 创建新时如何检索模型ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190586/