我有很多像这样的Backbone模型:
var register = Backbone.model.extend({
url: http://....../register/
});
var login = Backbone.model.extend({
url: http://....../login/
});
我的问题是:
我可以使用单独的文件来保存所有网址吗?就像一个包含所有网址的文件,我可以根据需要使用变量名称请求?这是一个糟糕的方法吗?我希望能够在不单独模拟文件的情况下更改这些apis。
答案 0 :(得分:1)
您可以拥有一个文件,例如appUrl,如下所示:
app.urls = {
registerUrl: "/register",
loginUrl: "/login"
}
和你的模特:
var register = Backbone.model.extend({
url: function(){
return app.urls['registerUrl']
}
});
答案 1 :(得分:0)
解决此问题的一种方法是在模型的实例化中传入URL,而不是为每个模型声明显式模型。这看起来像是:
var BaseModel = Backbone.Model.extend({
// My shared model properties
});
var myNewModel = new BaseModel(null, {
url: '/my-url-for-new-model'
});
或者,您可以将url
参数作为函数,然后返回相应的URL。这可能是这样的:
var urls = {
register: '/some-url/register/',
login: '/some-url/login'
};
var BaseModel = Backbone.Model.extend({
initialize: function(data, config) {
this.modelType = config.type;
}
url: function() {
return urls[this.modelType];
}
});
var loginModel = new BaseModel(null, {
type: login
});