javascript - 创建时重新获取 Backbone 集合

标签 javascript backbone.js

我有一个“条目”列表需要管理。列表显示在屏幕的下部,而条目表单显示在页面的顶部。 每个条目都拥有一个“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/

相关文章:

javascript - 如何让这个 jquery 代码更少冗余并且更高效?

javascript - Django - Javascript - 在图像刷新时禁用缓存

javascript - Backbone.js - 模型 URL 与集合 URL

javascript - 使用主干模板动态设置 img 标签的 'src'

backbone.js - Uncaught Error : A "url" property or function must be specified for a CollectionView

javascript - 延迟加载带过滤的项目

javascript - 从附加事件列表中关闭选定的事件处理程序

javascript - 为什么我的 bool 值在将其作为值传递给 radio 组件时始终为 true?

javascript - 按钮的 Jquery 选择器

javascript - 为什么主干 View 在早期代码之前呈现?