加载更多数据按钮的骨干

问题描述:

我有一个问题我正试图编写一个简单的应用程序,它将单击显示更多按钮后,将无法找到如何做到这一点: json文件中的3个元素,我想在点击显示更多按钮后再显示3个元素。我在json中有9个项目,达到限制后(这9个项目),然后单击显示更多我想显示警报已达到限制。 代码:加载更多数据按钮的骨干

$(function() { 
    var Tasks = Backbone.Model.extend(); 
    var TasksList = Backbone.Collection.extend({ 
     model: Tasks, 
     url: 'json/data.json' 
    }); 


    var TasksView = Backbone.View.extend({ 

    el: '#tasks', 
    con: 3, 
    events: { 
     'click #load-more': 'load_more' 
    }, 

    template: _.template($('#taskTemplate').html()), 

    initialize: function() { 
     this.listenTo(this.collection, 'reset', this.render); 

    }, 

    render: function() { 
     _.each(this.collection.first(this.con), function (task) { 
      var html = this.template(task.toJSON()); 

      this.$el.append(html); 
     }, this); 

     return this; 
    }, 
    load_more: function(){ 
     //loade more scope 
    } 
}); 

var tasks = new TasksList(), 
    tasksView = new TasksView({ collection: tasks }); 

tasks.fetch({ reset:true }); 

移动外DOM ready函数类的定义,它是不好的做法

renderTask: function (task) { 
    var html; 

    html = this.template(task.toJSON()); 

    this.$el.append(html); 
}, 

render: function() { 
    var tasks = this.collection.first(this.con); 

    _.each(tasks, this.renderTask, this); 

    this.count = tasks.length; 
}, 

onClickMore: function (event) { 
    var tasks = this.collection.models.slice(this.count, this.count + this.con); 

    event.preventDefault(); 

    if (tasks.length) { 
     _.each(tasks, this.renderTask, this); 

     this.count += tasks.length; 
    } else { 
     alert('Limit is reached'); 
    } 
} 
+0

感谢了很多,但一个错误“this.collection.range不是一个函数”中的“VAR任务= this.collection.range(this.count,this.count + this.con);“当例如改变范围为首先我总是得到警报 – Michal 2014-11-05 14:20:24

+0

对不起,我的坏。更新 – knpsck 2014-11-05 14:31:07

+0

Aa伴侣你正在拯救我的一天和神经,你真棒! – Michal 2014-11-05 14:36:08