我有一个“条目”列表需要管理。列表显示在屏幕的下部,而条目表单显示在页面的顶部。 每个条目都拥有一个“entryDate”属性。
该列表绑定(bind)到选定的“月”期间(例如 2014 年 8 月),它仅显示选定日期范围内的条目。这些条目也已分页。我每页显示 X 个条目,并无限滚动。列表的排序顺序按 EntryDate 降序排列,最近的条目首先显示。
如果entryDate 始终是currentDate,我可以将新行添加到列表中,而无需重新渲染整个内容,但事实并非如此。我认为检查输入的日期是否包含在选定的时间段内,只是为了知道是否需要重新加载列表,这是多余的。
现在,我想通过在每次成功插入时获取/重置列表来使其变得简单。但是……我做不到。
我的 View 代码片段:
initialize: function() {
this.collection = new EntriesCollection();
this.fetchTransactions();
this.listenTo( this.collection, 'reset', this.render );
this.listenTo( this.collection, 'add', this.fetchTransactions );
this.rowViews = [];
this.render();
},
fetchTransactions: function() {
this.collection.fetch({ reset:true });
},
addEntry: function() { // on form submit
var entryData = {};
// load data from form...
this.collection.create( entryData );
},
这无法正常工作,不会重新获取列表。
“添加”集合事件应该在获取之前还是之后触发?
最佳答案
您正在寻找的是等待
选项。
这在http://backbonejs.org/#Model-save中有很好的描述。和 http://backbonejs.org/#Collection-create
为您的create
提供{wait:true}
选项将确保add
仅在create<时触发
已成功被服务器接受。正常行为是将模型添加到集合中,然后将其发送到服务器。 wait 命令改变了这一点。
关于javascript - 创建时重新获取 Backbone 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25774670/