如何触发model.save()上的成功callback?

this.model.save({ success: function(model, response){ console.log('success'); }, error: function(){ console.log('error'); } }) 

模型正确地发布到处理保存的服务器,但成功callback没有被触发。 我需要从服务器发回一些东西吗?

保存的第一个参数是保存在模型上的属性:

 this.model.save( {att1 : "value"}, {success :handler1, error: handler2}); 

由于某种未知的原因,上述方法都没有为我工作。 这个API只是在我的情况下没有受到打击。

但后来在search这个时候,我碰到这个链接 ,其中有一个尝试null而不是{}作为第一个参数。

 this.model.save(null, { success: function (model, response) { console.log("success"); }, error: function (model, response) { console.log("error"); } }); 

所以,这对我有效。 希望这也能帮助你。

您的服务器必须返回一个JSON对象。 如果响应不是JSON对象,则callback将不会触发。

如果成功,你的服务器不返回一个JSON对象,用dataType:“text”选项进行保存,如下所示:

 this.model.save([],{ dataType:"text", success:function() {}, error:function() {} }); 

有了这个选项,它不会等待一个JSON的响应,而是一个文本,因此callback将启动。

您可以使用下划线如下作为主干已经取决于此。 请记住,保存的第一个参数必须具有属性,否则只要您想保存模型本身就可以传递。

 this.model.save({}, _.bind(function(model, response){ //Do whatever you want eg this.collection.add(model) }, this)) 

所以我有点困惑 – 我是否还需要传递所有属性才能调用保存事件? 如果我的模型是大的,我不想手动设置每个属性

即时调用model.save并尝试执行以下操作:

 this.model.save( { success: function (model, response) { console.log('model saved'); } }); 

好吧,只是为了回答我自己的问题,任何人发现这个职位,我做了以下工作:

 this.model.save({ id: this.model.get('id') }, { success: function (model, response) { console.log("success"); }, error: function (model, response) { console.log("error"); } }); 

编辑:由于某种原因,我无法回复你,但我可以编辑

但你不必设置id: this.model.get('id')你可以传递一个空白对象,因为空白属性不会扩展属性,什么也不做:

 this.model.save({}, { success: function (model, response) { console.log("success"); }, error: function (model, response) { console.log("error"); } }); 

以下是我用于骨干模型保存的代码。

 this.model.save(model,{ success:function(model){ console.log("Saved Successfully"); }, error:function(model){ console.log("Error"); } }); 

干杯

罗伊MJ

对于那些想要保存模型,不更新属性,您可以执行以下操作:

 model.once("sync", function(model, response, options){ // }); model.once("error", function(model, response, options){ // }); model.save(); 

在初始化函数时,将同步方法绑定到您定义的方法(onSaveSuccess)

  initialize: function (options) { this.model.on('sync', _.bind(this.onSaveSuccess, this)); }, onSaveSuccess: function() { console.log('saved'); this.render(); }, 

这样,每当你运行this.model.save()时,如果你的同步成功了,它会以callback方式运行onSaveSuccess函数