【问题标题】:Best way to trigger filters for Backbone.js collection触发 Backbone.js 集合的过滤器的最佳方法
【发布时间】:2011-08-01 08:12:27
【问题描述】:

大家好,我正在创建我的第一个 Backbone.js 应用程序。它基本上是一个在表格中呈现数据的集合。我想要做的是能够过滤和排序数据。 最好的方法是什么?我应该使用路由器还是存储一些渲染会考虑的参数。

我认为路由器很快就会变得非常复杂,因为我将拥有 3-4 个过滤器和 1 个订单选项。

你怎么看?

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    在我基于主干的项目中,我对 Backbone.Collection 进行了子类化,以允许 Controller 向其添加任意 GET 参数。

    这是一个给你的sn-p:

    RailsCollection = Backbone.Collection.extend({
      initialize: function() {
        _.bindAll(this, 'url');
      },
    
      url: function() {
        var base = this.baseUrl || this.model.prototype.baseUrl;
    
        if(!this.params) {
          return base;
        } else {
          return base + '?' + $.param(this.params);
        }
      }
    });
    

    【讨论】:

      【解决方案2】:

      我会在我的集合上添加用于过滤和排序的方法,并使用视图来呈现任意集合,可能会被过滤或排序。

      为了订购有一个内置的钩子:http://documentcloud.github.com/backbone/#Collection-comparator

      对于过滤,请查看集合上的下划线辅助方法,并使用您自己的方法进行扩展。

      例如,您可以有一个 collection.doFiltering([filter1, filter2, filter3]); 返回一个过滤后的数组。

      【讨论】:

      • 这就是我打算做的事情我的问题是如何触发它?我将有一些链接来过滤集合。我的问题是:过滤集合的函数应该通过路由器调用,或者在某处添加一个标志,以便视图知道必须过滤?
      • 您可以拥有一个带有视图修改过滤器的集合/模型,并且列表视图会侦听其更改并重新渲染? ui 中的模型不仅必须包含来自数据库的数据,它们还可以包含 ui 的当前状态
      • 我应该说,关于如何在主干中做事几乎没有严格的约定,它更像是一种工具,可以帮助您使用合理的默认结构,以及更多自定义、复杂的交互,您可以按照自己的方式构建至。可能在这里更好地解释:documentcloud.github.com/backbone/#FAQ-tim-toady :)
      猜你喜欢
      • 2012-08-06
      • 2014-03-12
      • 2011-10-27
      • 2021-09-24
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多