0

我最近构建了一个 requirejs/backbonejs 模块,它在我的页面上构建了一个表格。该集合获取数据并以 JSON 格式返回,我正在对其进行解析和渲染。到目前为止它工作正常,并且表格在页面上呈现精美。

我用来获取数据的 API 要求我在一个时间范围内传递。所以对于表格的第一次绘制,我传入一个 MS 值来获取最近 30 天的数据。

我在页面顶部还有一个过滤器部分,允许我选择要获取多少天的数据,1 周或 1 个月。

我如何让这个过滤器重新加载集合而不重绘整个页面?还是我只是错误地实施骨干/要求?

4

1 回答 1

1

砰。您的最后评论完全正确。

您甚至不需要使用此设置设置事件触发器。当您获取集合时,Backbone 会自动为您触发重置事件。

假设您有整个页面的 parentView。在该父视图中的某处是触发fetch()事件的下拉过滤器。您获取适当的数据(1 周或 1 个月)并重置您的集合。

您的子视图(子视图)有一个事件侦听器正在侦听您的集合重置:

// Inside child view
// (the view that houses all the individual model views of the collection)

this.collection.on('reset', this.render, this);

当它听到你重置你的收藏时,它只是重新渲染自己。

注意:一旦您开始创建子视图和子视图的子视图,请不要忘记在删除父视图时正确清理这些子视图(这意味着确保它们已从 DOM 中删除并与它们的任何事件侦听器分离)重新绑定。)否则你会得到讨厌的僵尸视图,它们会消耗资源并导致奇怪的混乱。这是一个流行的反复出现的问题。;-)

于 2012-09-05T00:20:47.647 回答