我正在使用Backbone并使用XEditable
进行内联编辑。
我在url
部分中执行以下操作,作为要调用XEditable的函数editable
的参数之一:
url: function(params) {
console.log(params);
console.log(here.model);
var saveUrl = here.model.url;
here.model.url += '/'+here.model.attributes._id; //setting required url for the request to be sent on the server
var d = new $.Deferred;
here.model.save(
{field:params.value},
{ patch: true },
{ error: function() {
console.log("error");
d.reject('Server Error..!');
}
},
{ success: function() {
console.log("done");
d.resolve();
}
}
);
return d.promise();
}
但是当我在服务器上保存数据时
我收到错误:
POST http://10.0.1.6:3000/g/spec/5229d8fff4ae7a3803000020 404 (Not Found) on console and
另外:在浏览器上,X editable的保存状态永远不会结束..意味着X editable会在无限循环上打印一些消息。
我的第一个问题是为什么数据无法保存在服务器上?
我已通过POSTMAN
chrome插件正确检查了此网址。
第二个问题是:如果某种方式数据无法保存在数据库中,因为我正在使用延迟对象并在出现错误时拒绝承诺,为什么X-editable没有显示错误“Server Error ..!”
答案 0 :(得分:1)
如果你想使用backbone的一个model.save,你应该将url留空并使用x-editable success-callback。例如。在视图的渲染方法中,您必须设置更新模型并触发保存(手动或通过模型的更改处理程序)
this.$el.find("#my-field").editable({
type : 'text',
name : myFieldTitle,
value : myCurrentValue,
pk : this.model.get('id'),
url : '',
success : function(response, newValue) {
self.model.set(field.name, newValue);
self.model.save(field.name, newValue);
}
});