为什么Backbone's collection create()方法未填充id
Why does Backbone's collection create() method not populate the id?
在下面视图的方法中,如果我正确理解create()
方法,我的模型就会与服务器同步。但是,this.model.id
的console.log
仍然返回undefined
,this.model.isNew()
返回true
。POST在返回的JSON对象中显示id,模型对象属性也显示id,那么为什么它们没有在模型中正确反映呢?我需要在创建新视图时设置id。
submitForm: function( e ) {
e.preventDefault();
this.model.set( this.$( '.editForm' ).serializeObject() );
if ( this.model.isNew() ) {
collection.create( this.model );
console.log( this.model, this.model.id, this.model.isNew() );
new MyView({
model: this.model
}).render().appendNode();
} else {
this.model.save();
}
this.closeForm();
}
Jacob,这里的问题只是在呈现视图之前,您需要等待服务器的响应。您的this.model.id
将是undefined
,因为您的模型是新的,这意味着它还没有保存在服务器中。
因此,您可以使用.create
函数中的success
回调。我相信这样的东西会对你有用。
if (this.model.isNew()) {
collection.create({
// or you can use this.model (if it is an object)
attribute_x: 'val',
attribute_y: 'val'
}, success: function(response){
// here your model with have an id
console.log(response);
new MyView({
model: response.model // check your response
}).render().appendNode();
});
} else {
new MyView({
model: this.model
}).render().appendNode();
}
因此,正如您所看到的,在success
回调中,我们呈现了View
。如果您console.log
响应,您将看到后端在创建模型时对您的响应。
如果需要,可以在调用create()
时使用{ wait: true }
选项;这样,模型只有在成功保存后才会添加到集合中。
将此与其他逻辑发生在集合的add
事件上相结合可能会花费很长的时间。如果您需要能够区分新的create
'd模型和以后添加到集合中的模型,则可以向create
调用添加另一个选项(类似于newlySaved: true
,然后在添加事件回调中检查options.newlySaved
)。
相关文章:
- 包含插入的Meteor方法没有返回记录ID作为结果
- 有没有一种简单的方法可以用包含id和名称(从a到Z)的对象填充数组
- 如何在jQuery的.on()方法中动态更新按钮的ID选择器
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- 将id/类放在HTML中的正确方法是使用foreach来获得确切的值
- 从 JavaScript 数组中删除 id 的更智能方法
- 有没有一种通用方法可以通过Javascript访问没有id的DOM元素
- NodeJS - 猫鼬,subdoc 对象没有方法 .id() 或 .create()
- push 方法将元素添加到数组中不起作用,同时获取具有相同类的元素的 ID 和值
- 无法在 jquery .append() 方法中的按钮中添加类或 id 以制作有效的按钮
- 如何调用通过它传递不同 ID 的函数方法
- 需要 document.getElementById 的解决方法,以便在多个 ID 可能性之间循环.类不起作用
- 按钮的 ID 更改,但 document.ready 函数调用前一个值的方法
- 方法 如果 P ID 为真
- ID 存储在 JS 变量中的 AJAX 加载方法
- 如何将项目id传递给我的控制器以进行删除方法
- Rails 4/ ajax - NoMethodError -未定义的方法' id'NilClass -将变量传
- Rails 4 Ajax NoMethodError -未定义的方法' id'NilClass:在我的creat
- Rails-远程销毁方法未呈现部分视图:NoMethodError未定义的方法`id'照片
- jquery和CSS中最快的选择器方法 - ID与否