Javascript 主干:在添加到集合之前从服务器获取新模型
目前,当我制作一个模型时,它会直接进入集合并保存到服务器,但是服务器会添加额外的信息模型,直到页面刷新后才会看到。我正在尝试从服务器而不是从生成模型的表单将新模型添加到集合中 这是我的添加方法Javascript 主干:在添加到集合之前从服务器获取新模型,javascript,backbone.js,Javascript,Backbone.js,目前,当我制作一个模型时,它会直接进入集合并保存到服务器,但是服务器会添加额外的信息模型,直到页面刷新后才会看到。我正在尝试从服务器而不是从生成模型的表单将新模型添加到集合中 这是我的添加方法 add:function(tenant){ var values = _.extend(this.$el.find(':input').serializeJSON(), {active: true , modelType:"tenant"}) console.log(values)
add:function(tenant){
var values = _.extend(this.$el.find(':input').serializeJSON(), {active: true , modelType:"tenant"})
console.log(values)
var newView = tenants.create(values, {// FIX REPONCE
success:function(model,response){
console.log(response);
console.log(model.isNew());
},
error:function(model,response){
console.log(response.responseText);
}
},{wait: true},{silent: true})
}
当它点击model.IsNew()时,它返回true,这意味着它还没有点击服务器。如何返回服务器模型?集合.create的第二个参数是
options
,但是您分别将选项{wait:true}
和{silent:true}
作为第三个和第四个参数传递。这就是为什么它们没有效果。试试这个:
var newView = tenants.create(values, {
wait: true,
silent: true,
success:function(model,response){
console.log(response);
console.log(model.isNew());
},
error:function(model,response){
console.log(response.responseText);
}
});
In注意到并更改了它,但对于没有首先命中服务器的模型,它仍然有相同的结果。@delboud这对我来说并不奇怪,因为即使没有将{wait:true}传递给
create
,传递给success
回调函数的模型也应该来自服务器。您可能需要检查从服务器返回的响应数据是否正确(例如,确保模型的id不是null
)。如果model.isNew()==true时响应正确,则可能需要检查模型的parse
方法(如果它已被覆盖)。