Backbone JS Model不同的API url

时间:2014-08-20 02:42:36

标签: backbone.js

这是骨干js的新手问题

我想问一下是否可以在每个模型方法上使用不同的API网址

var login = Backbone.Model.extend({
    urlRoot: apiUrl + 'member/login'
    initialize: function () {
        console.log('initialize')
    },
    logInEmail: function () {
        // will use urlRoot
    },
    validateEmail: function (emailToValidate) {
        // will use this url
        // apiUrl + 'member/validate'
    }
});

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。

只需更改this.urlRoot即可。 对于您的示例,它将如下所示:

var login = Backbone.Model.extend({
    urlRoot: 'member/login',
    otherApiUrl: 'othermember/login', 
    initialize: function () {
        console.log('initialize')
    },
    logInEmail: function () {
        // will use urlRoot
    },
    validateEmail: function (emailToValidate) {
        this.urlRoot = this.otherApiUrl; 
        // will use otherApiUrl
    } 
});

请务必在需要时放回右侧urlRoot

是的,应该遵守CORS个问题。

修改

Backbone包含负责RESTful JSON接口的Backbone.sync

validateEmail方法可以使用简单的$ .ajax和otherApi网址。然后它将返回promise对象,您可以在其上调用您的成功函数。

通过Backbone实现此目的的其他方法,您应该初始化new Backbone.Model以Backbone方式执行相同的任务。我猜你的情况$ .ajax将是更好的选择。