关于在Backbone.js应用程序中进行搜索的想法

时间:2013-04-03 12:22:13

标签: javascript backbone.js

我现在所拥有的


  • 产品型号/视图;
  • 产品系列;
  • 产品列表视图;
  • 相当简单的寻呼机视图;
  • 当然还有路由器;

路由器

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);
});

Pager and its template can be found there

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方法吗?
  • 我知道可以在集合上调用wherefilter等函数吗?我该怎么用?
  • 我应该缓存提取的结果吗?
  • 如何重复使用寻呼机?我应该在options参数中传递url模式吗?
  • 嗯......如何重建我的应用程序,以便通过例如此路线进行搜索!/search/:term/:page

<小时/> 我对使用Backbone.Pagination

不感兴趣

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需要一个产品列表,并希望创建一些过滤器。因此,您想知道如何做到这一点。好吧,我说这取决于很多因素 无论如何,你在开始时取出一切吗?如果是的话,当然你只会使用JS。如果不是:
缓存结果?好吧,我不知道你是怎么做到的,或者我真的很麻烦。仍然取决于: 数据量转移大吗? 有很多事情需要考虑,问题始于路由器。只有一个路由被叫(Backbone绝对不能调用多个路由,它会在匹配的第一个模式停止,与你拥有的路由器数量无关),你必须加载你的搜索页面,做你的过滤器,然后去到正确的页面 tl;博士:我认为我们没有足够的信息来真正帮助你。

关于如何使用where等,我认为Backbone's doc在这个问题上非常完整(我真的不知道你想知道些什么)。