0

我现在拥有的


  • 产品型号/视图;
  • 产品集合;
  • 产品列表视图;
  • 相当直接的寻呼机视图;
  • 当然还有路由器;

路由器

var AppRouter = Backbone.Router.extend({
    routes: {
        '': 'list',
        '!/products': 'list',
        '!/products/page/:page': 'list'
        //, '!/search/:term/:page': 'some_handler'
    }
});

appRouter.on('route:list', function(page) {
    renderProductsList(page);
});

寻呼机及其模板可以在那里找到

var renderProductsList = function(page) {
    require(['collections/ProductsList', 'views/ProductListView', 'views/PagerView'], 
    function(ProductsList, ProductListView, PagerView) {
        var p = page ? parseInt(page, 10) : 1;
        var productsList = new ProductsList();
        productsList.fetch({
            success: function() {
                var $container = $("#content-region");
                $container.html(new ProductListView({
                    model: productsList,
                    page: p
                }).el);

                // attach pager
                var $pager = new PagerView({
                    // pager options
                }).$el;
                // ...
            },
            error: function() {
                // handle the error
            }
        });
    });
}


问题

  • 我应该重用renderProductsList方法吗?
  • 我知道像where,之类的函数filter可以在集合上调用吗?我该如何使用它?
  • 我应该缓存获取的结果吗?
  • 如何重复使用我的寻呼机?options我应该在参数中传递 url 模式吗?
  • 好吧......我如何重建我的应用程序以使其可以通过例如这条路线进行搜索!/search/:term/:page


我对使用不感兴趣Backbone.Pagination

4

1 回答 1

0

如果我理解正确,您只有一个产品列表,并且想创建一些过滤器。因此,您想知道如何做到这一点。好吧,我会说这取决于很多因素。
无论如何,您是否在开始时获取所有内容?如果是,那么,当然你只会使用 JS。如果不是:
缓存结果?好吧,我不知道你会怎么做,或者我猜这真的很麻烦。还是要看:传输的数据量大吗?..要考虑的东西还挺多的,问题就从路由器开始。只调用一个路由(Backbone 绝对不能调用多个路由,它将在第一个匹配的模式处停止,与您拥有的路由器数量无关),您必须加载搜索页面,进行过滤,然后去到正确的页面。
tl;dr:我认为我们没有足够的信息来真正帮助您。

至于如何使用where等等,我认为Backbone 的文档在这个主题上非常完整(我真的不知道你想知道什么)。

于 2013-04-03T13:23:32.657 回答