使用动态URL进行Backbone Collection

在创建Collection时,Backbone会为所有人配置一次url.有没有办法在以后更改此URL?

以下示例显示/产品中的2 POST和/ product / id / stock中的2 POST.最后一个POST不起作用,Backbone连接id并尝试PUT它,但我不知道为什么.

products.create({ name: 'American Pastoral', price: 8 });
products.create({ name: 'The Grapes of Wrath', price: 10 });

products.each(function(product) {
    var id = parseInt(product.get('id'));
    stocks.setId(id);
    stocks.create({ id: id, quantity: 12 });
}

库存集合:

Backbone.Collection.extend({
    url: function() {
        return this.url;
    },
    parse : function(resp) {
        return resp.stock;
    },
    setProduct: function(id) {
        this.url = '/product/'+id+'/stock';
    }
});

这不行.

保存现有模型时,Backbone.js将使用模型的url.不太清楚你要做什么 – 例如,我不知道股票是什么.无论如何,您的代码可能需要看起来类似于下面的代码,您不应该动态更改URL:

Product = Backbone.Model.extend({

    url: function() {
        return '/product/' + id + '/stock';
    }

});

ProductList = Backbone.Collection.extend({

    model: Product,

    url: '/product'

}):

然后Backbone.js将使用集合url进行创建,使用模型url进行保存.我认为你需要单独保留url并让backbone的默认功能处理它.

相关文章
相关标签/搜索