Tim*_*smo 10 ajax ruby-on-rails backbone.js ruby-on-rails-3.2
我在Rails 3.2.2上运行Backbone js 0.9.2,我有一个页面用于添加成本行.一个成本有3个TextFields:标题,描述和价格.
我节省了模糊的每个成本.
model.save()以非常短的间隔多次调用.哪个发出一个create(post)请求,然后update(put)在那之后不久发出请求.我遇到的问题是PUT请求有时会在POST之前到达服务器,结果是模型被创建并持久两次(重复).
为了节省模糊是请求的行为,所以我需要一种方法来排队请求.我已经阅读了有关Spine js的内容,并且他们通过某种队列来解决它.我也看过这个,但似乎无法弄清楚这一点.
感觉这应该是一个常见的问题,使用"单页应用程序"但无法找到任何相关信息.
您可以覆盖save方法并使用延迟对象创建队列.例如,
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"});
Run Code Online (Sandbox Code Playgroud)
还有一个小提琴:http://jsfiddle.net/nikoshr/8nEUm/
| 归档时间: |
|
| 查看次数: |
1493 次 |
| 最近记录: |