我需要在运行时将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
传递给我的模特?
答案 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"
});
使用匿名函数可以在发出请求之前处理一些数据(即可能修改字符串)。
我能正确理解你的问题吗?