【问题标题】:Backbone. Pass argument from router to view/collection?骨干。将参数从路由器传递到视图/集合?
【发布时间】:2013-12-11 14:28:53
【问题描述】:

无法将我的数据放到我想要的位置。

在我的路由器中,我有一个传递 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。我该怎么做?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    将 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();
        }
    });
    

    【讨论】:

    • 谢谢!实现了您的代码,但集合中的 id 似乎未定义..
    • 对不起。我的错!搞砸了deckId和id。坦克你!
    • 我有一个问题,我如何在这里传递 id getDeckId: function(id) ??我没有得到这个
    • @SweetWisherツ 我知道这已经晚了,但也许其他人会觉得它有用。它可能没有得到很好的解释。路由键中的 ":id" 是作为参数传递给在该键的路由值中指定的函数的内容。因此,如果 example.com/deck/1 是您的 url,那么 1,因为它在 :id 位置是您传递给 getDeckId 的 id。希望这对某人有帮助~​​
    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多