我有一个小的Backbone
/Express
应用程序,我想偶尔同步一个名为JobStatuses
的模型。骨干文档指出:Backbone.Models#保存回调没有被触发
保存接受的选项哈希,这 将被传递的参数(模型,响应选项),成功和错误回调。如果 服务器端验证失败,则返回非200 HTTP响应代码, 以及文本或JSON中的错误响应。
然而,当我打电话JobStatuses.save
,我从我的控制台中看到,尽管该服务器返回的状态200,我success
/failure
回调没有得到触发的事实。这里是我的视图,模型和服务器端处理函数的路径的代码。 updateJobs
是被调用的函数。为什么我的JobStatuses.save
回调没有被触发?
这是调用JobStatuses.save
的视图。我可以确认render
函数在这里被调用。
reqs = ['jquery', 'backbone', 'underscore', '../models/jobstatuses']
define(reqs, ($, Backbone, _, JobStatuses)->
class ButtonView extends Backbone.View
el: $('.button-container'),
template: _.template($('#button-template').html())
constructor:()->
this.listenTo(JobStatuses, 'sync', this.render)
this.listenTo(JobStatuses, 'save', this.render)
JobStatuses.fetch()
render:()->
this.el.html(this.template(jobStatuses: JobStatuses.attributes))
this.buttons = this.el.find('.job-button')
this.buttons.click(()->
category = $(this).attr('category')
job = $(this).attr('job')
JobStatuses.attributes[category][job] = 'Completed'
JobStatuses.save(
success: (() ->
console.log('statuses')
console.log(JobStatuses.attributes)),
error: (()->
console.log('failure'))
)
)
)
的JobStatuses
模型:
define(['backbone'], (Backbone)->
class JobStatuses extends Backbone.Model
url: '/jobs'
new JobStatuses
)
我的路线。 updateJobs
是被这里所说的只有一个:
/*
* GET home page.
*/
var RUNNING = 'Running';
var COMPLETED = 'Completed';
var BLOCKED = 'Blocked';
var NOT_STARTED = 'Not started';
var jobs = {
'oon': {
'oonload': NOT_STARTED,
'oonstagecopy': NOT_STARTED
},
'icd': {
'icdload': NOT_STARTED,
'icdstagecopy': NOT_STARTED
}
}
exports.index = function(req, res){
res.render('index', { title: 'Backbonejs Batchstart' });
};
exports.getJobs = function(req, res){
//res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(jobs));
};
exports.updateJobs = function(req, res){
jobs = req.body;
console.log(req.body);
console.log(jobs);
res.send(JSON.stringify(jobs));
};
只是想你的建议......没有区别:( – user886596
你还必须指定要保存的,尝试抛出一个空对象文本作为保存调用即JobStatuses.save(以JobStatuses的第一个参数。保存({}, –
啊,我知道我错过了一些东西。谢谢,这很有效。如果你做出答案我可以接受。 – user886596