Backbone正确的方式来扩展Backbone.Model

时间:2014-09-09 01:21:41

标签: backbone.js marionette

我正在尝试使用RESTful api来注册用户。

这是我的型号代码:

var User = Backbone.Model.extend({
    idAttribute: '_id',
    host: 'http://localhost:3000',
    url: '/api/user'
});

这是我视图中用于处理注册按钮的代码:

signupClick: function (e) {
    e.preventDefault();
    var email = $('#input-email').val();
    var pwd1 = $('#input-pwd').val();
    var pwd2 = $('#input-pwd2').val();

    if(pwd1 !== pwd2) {
        return alert('password does not equal');
    }

    var user = new UserModel({email: email, password: pwd1});
    user.sync();

}

API在localhost上: POST / api / user 正文:{email:' email@email.com' ;,密码:' 123456'}

但是我在浏览器控制台中收到以下错误信息:

  

未捕捉错误:A" url"必须指定属性或功能

我在这个模型中做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,模型通过推迟到其包含的集合" url()"来生成网址。功能。如果您的模型不是由集合管理的,则应指定模型" urlRoot"属性。

因此,在您的示例中,将您的模型更改为此,您应该获得以下内容:

var User = Backbone.Model.extend({
    idAttribute: '_id',
    host: 'http://localhost:3000',
    urlRoot: '/api/user'
});

[相关文档在这里:http://backbonejs.org/#Model-url]