【问题标题】:Use dynamic url for Backbone Collection对主干集合使用动态 url
【发布时间】:2011-05-31 14:57:29
【问题描述】:

创建集合时,Backbone 一次性配置 url。以后有办法改这个网址吗?

以下示例显示在 /product 的 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';
    }
});

行不通

【问题讨论】:

标签: url collections backbone.js


【解决方案1】:

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,让主干的默认功能处理它。

【讨论】:

    【解决方案2】:

    我遇到了本质上相同的问题。 Backbone 的模式似乎是锁定模型和集合中的相关 URI,并允许框架使用这些来构建给定资源的最终 URI。这对于不会更改的 Restful URI 模板非常有用。但是在纯 RESTful 服务中,您会期望相关 URI 列表作为给定资源的一部分而下降。您可能需要这样做的原因有很多,一个明显的原因是资源的 URI 移动了。

    据我所知,Backbone 无法轻松干净地处理此问题。在上面的问题中,我的解决方法基本上是使用 OLN 重新定义模型 url 方法。您将在首次获取集合或对其进行初始化时执行此操作。基本上自己构建处理 URI 列表的逻辑。

    【讨论】:

      【解决方案3】:

      我知道这是一个老问题,但我花了一点时间来确定如何解决我的问题。在 fetch 操作下的手册中有这样的花絮:

      jQuery.ajax options can also be passed directly as fetch options, so to fetch a specific page of a paginated collection: Documents.fetch({data: {page: 3}})
      

      传递给数据参数的对象被添加为 URL GET 变量。因此,如果已经存在变量,URL 将变为 URL?page=3 或 URL?x=1&page=3。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多