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
Backbone.js 主干网分页中的问题_Backbone.js - Fatal编程技术网

Backbone.js 主干网分页中的问题

Backbone.js 主干网分页中的问题,backbone.js,Backbone.js,我想在主干中进行分页。我有一个选择框,当我点击它时,我希望它显示特定数量的数据 <div class="results right" > <form> <label for="results">Results pr. page</label> <select name="results" id="ShowSelect"> <option

我想在主干中进行分页。我有一个选择框,当我点击它时,我希望它显示特定数量的数据

<div class="results right" >
          <form>
            <label for="results">Results pr. page</label>
            <select name="results" id="ShowSelect">
              <option value="25" >25</option>
              <option value="50" >50</option>
              <option value="100" >100</option>
              <option value="500" >500</option>
            </select>
          </form>
        </div>
这是我的收藏:

pagination : function(perPage, page) {
                page = page - 1;
                var collection = this;
                collection = _(collection.rest(perPage * page));
                collection = _(collection.first(perPage));
                return collection.map( function(model) {
                    return model.toJSON();
                });
            },
这是我在另一个文件中的观点:(未完成)

老实说,我不知道如何评估视图中的max page。我所做的是,当用户单击选择器时,我会得到它的id(我要加载的数据数量,例如100、50等),并创建了另一个用于评估要加载的最大页面的函数。但是我怎样才能得到数据的数量呢

 var maxPages = Math.ceil(? / this.pageSize);
                        console.log("max", maxPages);
                        var pageToLoad = this.currentPage + 1;
                        console.log("load me page", pageToLoad);
                        if(pageToLoad <= maxPages) this.renderRecentList(this.selectedGroupId, pageToLoad);
                        else{
                            console.log("no more pages to load");
                            this.setGlobalMessage("no more pages to load", "information");
                        }
                        return this;
var maxPages=Math.ceil(?/this.pageSize);
console.log(“max”,maxPages);
var pageToLoad=this.currentPage+1;
log(“加载我的页面”,pageToLoad);

if(pageToLoad我建议您在服务器端执行此操作。仅加载要显示的项目,如果参数更改,则创建新请求

因此,步骤如下:

  • 创建一个接收每页和页码参数并仅返回相应项的服务
  • 当用户第一次进入此页面时,使用默认参数执行请求并呈现项目
  • 当用户更改页面或每页项目时,执行新请求并呈现来自服务器的项目
  •      events : {
    
                                "change #messageSelect" : "changedGroup",
    
                            },
    
           changedGroup : function(e){
                            e.preventDefault();
                            console.log("selector changed");
                            this.currentPage = 1;
                            this.selectedGroupId = $("#messageSelect :selected").attr("value");
                            console.log("id of select is", this.selectedGroupId);
    
                            //Resets current groups when changed.
                            this.currentGroup = this.collection.get(this.selectedGroupId);
                        },
    
    renderRecentList : function(groupID, pageToLoad) {
                        var banPage = pageToLoad || this.currentBansPage ;
                        console.log("Load page", banPage);
                        this.selectedGroup = this.collection.get(groupID);
                    }
    
     var maxPages = Math.ceil(? / this.pageSize);
                            console.log("max", maxPages);
                            var pageToLoad = this.currentPage + 1;
                            console.log("load me page", pageToLoad);
                            if(pageToLoad <= maxPages) this.renderRecentList(this.selectedGroupId, pageToLoad);
                            else{
                                console.log("no more pages to load");
                                this.setGlobalMessage("no more pages to load", "information");
                            }
                            return this;