Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于在Backbone.js应用程序中进行搜索的想法_Javascript_Backbone.js - Fatal编程技术网

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

Javascript 关于在Backbone.js应用程序中进行搜索的想法,javascript,backbone.js,Javascript,Backbone.js,我现在拥有的 产品模型/视图 产品收集 产品列表视图 相当直观的寻呼机视图 当然还有路由器 路由器 问题 我是否应该重用renderProductsList方法 我知道可以对集合调用where,filter之类的函数?我怎么用这个 我应该缓存获取的结果吗 如何重用我的寻呼机?我应该在options参数中传递url模式吗 嗯。。。如何重建应用程序以使搜索成为可能,例如,此路由/搜索/:术语/:页面 我对使用主干网不感兴趣。分页如果我理解正确,您只是有一个产品列表,并且希望创建一些过

我现在拥有的


  • 产品模型/视图
  • 产品收集
  • 产品列表视图
  • 相当直观的寻呼机视图
  • 当然还有路由器
路由器


问题

  • 我是否应该重用
    renderProductsList
    方法
  • 我知道可以对集合调用
    where
    filter
    之类的函数?我怎么用这个
  • 我应该缓存获取的结果吗
  • 如何重用我的寻呼机?我应该在
    options
    参数中传递url模式吗
  • 嗯。。。如何重建应用程序以使搜索成为可能,例如,此路由
    /搜索/:术语/:页面


我对使用主干网不感兴趣。分页

如果我理解正确,您只是有一个产品列表,并且希望创建一些过滤器。所以你想知道怎么做。我认为这取决于很多因素。
不管怎样,你一开始就把所有东西都拿来了吗?如果是的话,当然你只会使用JS。如果没有:
缓存结果?嗯,我不知道你会怎么做,或者我想这真的是一件麻烦事。但这取决于: 传输的数据量大吗?。。 有相当多的事情要考虑,问题开始于路由器。只调用一条路由(主干网绝对不能调用多条路由,它将在第一个匹配的模式时停止,与您拥有的路由器数量无关),您必须加载搜索页面,进行筛选,然后转到正确的页面。
tl;我想我们没有足够的信息来真正帮助你


至于如何使用
where
等等,我认为这是一个非常完整的主题(我真的不知道你想知道关于这些的什么)。

是的,你可以做你想做的任何事情,但是。。。您想要实现什么?我只想使用给定的术语执行搜索,并使用产品列表视图进行搜索。我不知道是应该过滤客户端的缓存数据,还是应该根据每个请求点击服务器?我只需要知道其他人在这种情况下会做什么。我想说的是使用服务器端过滤。毕竟,您希望用户看到实际存在的内容,如果需要,您可以始终在服务器端添加缓存。不要预先优化。
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
            }
        });
    });
}