2

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

这是我的模型:

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给我的模型?

4

2 回答 2

4

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

table = new App.Models.Table({
    id: id
});
table.urlRoot = this.url;
于 2013-01-11T21:01:06.717 回答
2

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

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

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

我是否正确理解您的问题?

于 2013-01-11T21:00:13.057 回答