Jquery Backbone.js用于保存模型数据的代码段。
任何人都可以发布一个小的代码片段来将主干模型保存到数据库中吗 jquery将覆盖Backbone.syncJquery Backbone.js用于保存模型数据的代码段。,jquery,backbone.js,Jquery,Backbone.js,任何人都可以发布一个小的代码片段来将主干模型保存到数据库中吗 jquery将覆盖Backbone.sync 这会有很大的帮助,谢谢 根据经验,最好在集合和模型中显式调用AJAX,而不是使用常规的Sync。给你更多的灵活性。下面是我们对待办事项列表中的一组任务所做的操作 myModel = new Model id:'model1' $.ajax '/urlWhereUWantToSaveModel', type: 'POST' data: myModel.toJSON() data
这会有很大的帮助,谢谢 根据经验,最好在集合和模型中显式调用AJAX,而不是使用常规的
Sync
。给你更多的灵活性。下面是我们对待办事项列表中的一组任务所做的操作
myModel = new Model id:'model1'
$.ajax '/urlWhereUWantToSaveModel',
type: 'POST'
data: myModel.toJSON()
dataType: 'json'
success: (response) ->
// Server response should be json object with an error property if something went wrong
if response.error
console.log 'save failed'
else
console.log 'save succeeded'
error: ->
console.log 'error'
TaskCollection = Backbone.Collection.extend({
// Get all existing tasks from the server
fetch: function(options) {
var collection = this;
// Remove references to callbacks so that calls further down
// don't trigger them again!
var onsuccess = options.success; if (options.success) delete options.success;
var onerror = options.error; if (options.error) delete options.error;
$.ajax({
url: '/get_tasks',
type: 'GET',
dataType: 'json',
success: function(object, status) {
collection.refresh(collection.parse(object));
if (onsuccess) onsuccess(collection, object);
},
error: function(xhr, status, error) {
if (onerror) onerror(collection, xhr.responseText);
}
}
});
TaskModel = Backbone.Model.extend({
// Save a task on the server
save: function(options) {
var model = this;
$.ajax({
url: '/save_task',
type: 'POST',
dataType: 'json',
data: model.toJSON(),
success: function(object, status) {
if (options.success) options.success(model, object);
},
error: function(xhr, status, error) {
if (options.error) options.error(model, object.content);
}
}
});
var tasks = new TaskCollection();
tasks.fetch();
TaskCollection=Backbone.Collection.extend({
//从服务器获取所有现有任务
获取:函数(选项){
var集合=这个;
//删除对回调的引用,以便进一步向下调用
//不要再触发它们!
var onsuccess=options.success;如果(options.success)删除options.success;
var onerror=options.error;如果(options.error)删除options.error;
$.ajax({
url:“/get_tasks”,
键入:“GET”,
数据类型:“json”,
成功:功能(对象、状态){
collection.refresh(collection.parse(object));
if(onsuccess)onsuccess(collection,object);
},
错误:函数(xhr、状态、错误){
if(onerror)onerror(collection,xhr.responseText);
}
}
});
TaskModel=Backbone.Model.extend({
//在服务器上保存任务
保存:功能(选项){
var模型=此;
$.ajax({
url:“/save_task”,
键入:“POST”,
数据类型:“json”,
数据:model.toJSON(),
成功:功能(对象、状态){
if(options.success)options.success(model,object);
},
错误:函数(xhr、状态、错误){
if(options.error)options.error(model,object.content);
}
}
});
var tasks=new TaskCollection();
tasks.fetch();
请注意,我们假设服务器为每个任务对象吐出一个unqiueid
属性。主干将使用该属性来标识模型。因此您可以执行类似于tasks的操作。获取(12)
以检索id为12的任务
还要注意的是,在Planbox中,我们在save_status
和move
等模型上有一组更丰富的save
功能。这使我们能够灵活地添加更多的前后处理,如验证和更新细节
我们还扩展了通用主干集合和模型对象,以封装上述获取和保存函数