脊梁骨将参数从路由器传递到视图/集合



在将数据获取到需要的位置时遇到一些问题。

在我的路由器中,我有一个传递ID的函数,如下所示:

    routes: {
        'deck/:id': 'getDeckId'
    },
    getDeckId: function(id) {
        this.loadView(new DeckView())
    },
    loadView: function(view) {
        this.view && (this.view.kill ? this.view.kill() : this.view.remove());
        this.view = view;
    } 

在我的集合中,我加载了一个JSON文件。在这个URL中,我想添加我在路由器中传递的ID。

var DeckCollection = Backbone.Collection.extend({  
    model: DeckModel,  
    url: "myUrl"+id, //the id i passing from my router
    parse: function (response) {
        return response;
    },
    initialize: function() {
    },
    return DeckCollection;
});

视图

var DeckView = Backbone.View.extend({
   //initialize etc
});

因此,当视图初始化时,我想用路由器传递的ID加载这个JSON。我该怎么做?

将id传递给DeckView构造函数。

routes: {
    'deck/:id': 'getDeckId'
},
getDeckId: function(id) {
    this.loadView(new DeckView({deckId: id}))
},
loadView: function(view) {
    this.view && (this.view.kill ? this.view.kill() : this.view.remove());
    this.view = view;
}

创建将使用id和您的url 的url函数

var DeckCollection = Backbone.Collection.extend({
    id: '',
    model: DeckModel,  
    url: function () {
        return 'myURL' + this.id;
    }
});

在视图初始化时设置集合的id

var DeckView = Backbone.View.extend({
    initialize: function (options) {
        this.decks = new DeckCollection();
        this.decks.id = options.id;
        this.decks.fetch();
    }
});

相关内容

  • 没有找到相关文章

最新更新