javascript - 创建新时如何检索模型ID?

标签 javascript jquery backbone.js

使用 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/

相关文章:

javascript - Ionic 3 - 根据鼠标/触摸位置, Canvas 绘制并不完美

javascript - 使用 JQuery 将数千行动态加载到表中

javascript - 检查 CSS 选择器是否有效

javascript - JQuery获取输入值

javascript - 移动菜单 - 在移动设备上直接出现

javascript - JQuery .data() 在更改值后不获取值

Backbone.js:从 subview 访问父 View ?

javascript - 创建动态间隔垂直线的背景

javascript - Backbone.js 设置

javascript - Backbone Marionette : Router Not Routing Correctly