如何将urlRoot传递给Backbone中的模型

时间:2013-01-11 20:44:56

标签: backbone.js

我需要在运行时将urlRoot传递给模型,因为模型的几个不同类使用不同的urlRoot

这是我的模特:

App.Models.Table = Backbone.Model.extend({ });

以下是我要使用它的地方:

var m = new App.Models.Table();
var t = new App.Collections.Tables(m, { url: this.url });
var tables = new App.Views.Tables({ collection: t, template: this.template });

this.url根据调用它的事件返回正确的值。我将模型传递给错误的集合了吗?这是我的收藏:

App.Collections.Tables = Backbone.Collection.extend({
    url: this.url,
    model: App.Models.Table,
    initialize: function(models, options) {
        if (options && options.url) {
            this.url = options.url;
        }
        this.fetch({
              success: function(data, options) {

            }
        });
    }
});

如何将this.url传递给我的模特?

2 个答案:

答案 0 :(得分:4)

假设this.url是您示例中的正确网址,请执行以下操作:

table = new App.Models.Table({
    id: id
});
table.urlRoot = this.url;

答案 1 :(得分:2)

URL应该是字符串常量或返回字符串的函数。在您的收藏中,您需要执行以下操作:

App.Collections.Tables = Backbone.Collection.extend({
    url: function() { return "http://my.url/" },
    // or, url: "http://my.url"
});

使用匿名函数可以在发出请求之前处理一些数据(即可能修改字符串)。

我能正确理解你的问题吗?