我在Rails 3.2.2上运行Backbone js 0.9.2,我有一个用于添加费用行的页面。一个费用有3个TextField:标题,说明和价格。
我节省了模糊的每个成本。model.save()
以非常短的间隔多次被调用。稍后发出一个create(post)
请求,然后发出一个update(put)
请求。我遇到的问题是PUT请求有时在POST之前到达服务器,其结果是模型被创建并持续两次(重复)。
为了避免模糊是请求的行为,因此我需要一种将请求排队的方法。
我已经阅读了一些有关Spine js的内容,他们通过某种队列来解决它。我也查看了this,但似乎无法弄清楚。
感觉这应该是一个普遍的问题,使用“单页应用程序”,但找不到任何东西。
最佳答案
您可以覆盖save方法,并使用deferred object创建队列。例如,
var MDef = Backbone.Model.extend({
url: "/echo/json/?delay=3",
initialize: function() {
this.queue = $.Deferred();
this.queue.resolve();
},
save: function(attrs,options) {
var m = this;
console.log("set "+JSON.stringify(attrs));
// this.queue = this.queue.pipe with jquery<1.8
this.queue = this.queue.then(function() {
console.log("request "+JSON.stringify(attrs));
return Backbone.Model.prototype.save.call(m, attrs, options);
});
}
});
var m = new MDef();
m.save({title: "a title"});
m.save({description: "a description"});
m.save({price: "a price"});
和 fiddle :http://jsfiddle.net/nikoshr/8nEUm/
关于ruby-on-rails - Ajax队列 Backbone js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10000352/