2014-09-09 3 views
0

Я пытаюсь использовать RESTful api для регистрации пользователя.Магистральный правильный способ расширения Backbone.Model

Вот мой код модели:

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-интерфейс на локальном хосте: POST/API/пользователя Тело: {email:'[email protected] ', пароль:' 123456 '}

Но у меня есть следующая ошибка: msg в консоли браузера:

Uncaught Error: A "url" property or function must be specified

Что я сделал не так в этой модели? Благодаря!

ответ

0

По умолчанию модели генерируют URL-адрес, откладывая их к функции «url()», содержащейся в их коллекции. Если у вас есть модель, которой не управляет коллекция, вы должны указать свойство модели «urlRoot».

Таким образом, в вашем примере, изменить модель для этого, и вы должны получить то, что вы после:

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

[соответствующая документация находится здесь: http://backbonejs.org/#Model-url]

+0

Я просто попробовал ваш код. Он все еще не работает, такая же ошибка msg. –

+0

Я также прочитал документ, который вы предложили, это немного запутывает меня, потому что я до сих пор не понимаю, как указать URL-адрес для модели без коллекции. Пожалуйста помоги. –

+1

Извините, я не заметил, что вы также вызывали user.sync(), а не user.save(). Вы хотите использовать последнее. Кроме того, в вашем примере вы определили модель как User, но затем создали экземпляр UserModel. Угадайте, что это была просто опечатка, так как вы получили бы другую ошибку, если бы эта проблема была в вашем реальном коде. –

Смежные вопросы