用于保存所有REST api的配置文件

时间:2013-11-18 00:28:19

标签: javascript backbone.js

我有很多像这样的Backbone模型:

var register = Backbone.model.extend({
url: http://....../register/
});

var login = Backbone.model.extend({
url: http://....../login/
});

我的问题是:

我可以使用单独的文件来保存所有网址吗?就像一个包含所有网址的文件,我可以根据需要使用变量名称请求?这是一个糟糕的方法吗?我希望能够在不单独模拟文件的情况下更改这些apis。

2 个答案:

答案 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
});