BackboneJS如何在View里面使用参数

时间:2015-02-24 13:42:30

标签: javascript backbone.js

我有一个Backbone Collection,它返回给定数量的模型,现在我有一个"加载更多"按钮应该加载更多的模型。加载的Collection基于参数。我的问题是,当加载Collection时,在Views initialize函数中,我能够获得Collection所基于的参数。但是,在我的" loadMore"中需要此参数。功能。所以,我的问题是,如何将initialize函数中的参数传递给另一个函数?

这是我到目前为止所得到的:

MyStuff.Collection = Backbone.Collection.extend({           
    url: 'someUrl',
    initialize: function(opts) {
         opts = opts || {};
         this.value= opts.value;
    },
    step: 0,
    parse: function(response){
        var slice = response.results.slice(this.step*8,(this.step+1)*8);
        this.step++;
        return slice;
    }       
});

MyStuff.View= Backbone.View.extend({
    template: 'myTemplate',
    initialize: function() {    
        this.currentPage = 0;           
        this.listenTo(this.collection, 'sync', this.hideLoader);
        this.listenTo(this.collection, 'reset', this.afterRender);
        this.collection.reset(this.collection.shuffle(), {silent:true});
        var suit = this.collection.toJSON()[0]; // HERE I GET MY VALUE!!                
    },
    events: {
        'click .loadMore': 'loadMore'
    }

    loadMore: function(opts){
        this.showLoader();
        this.currentPage++;
        this.collection.fetch({url: this.collection.url + '?page='+ this.currentPage + '&value=' // HERE I NEED MY VALUE!!!! //, remove: false});
        this.collection.fetch({remove: false});
        this.render();
      }
});

return MyStuff;

1 个答案:

答案 0 :(得分:1)

this.suit = this.collection.toJSON()[0].nameOfYourKey;

'&value=' + this.suit

您可以访问放在this上的视图实例指针。