2013-09-18 2 views
2

Я пытаюсь установить данные по моей модели пользователя с помощью функции «» в зарегистрировались на мой взгляд:

initialize: function() { 
    console.log('Sign in view initialized'); 
    this.render(); 

    this.userModel = new UserModel(); 
    this.collection = new UserCollection(); 
}, 

signIn: function(e) { 
    e.preventDefault(); 

    var self = this; 

    $.ajax({ 
     type: 'POST', 
     url: 'http://localhost/app/api/User.php', 
     dataType: "json", 
     data: $.param({ 
      req: "REQUSERSIGNIN", 
      platform: "WEB", 
      useremail: $('#userSignIn #userEmail').val(), 
      userpass: $('#userSignIn #userPassword').val() 
     }), 
     success: function(response) { 

      self.userModel.set({ 
       handle: response.HANDLE, 
       email: response.EMAIL, 
       uuid: response.UUIDUSER, 
       userpic: response.USERPIC, 
       tokenlogin: response.TOKENLOGIN 
      }); 

      console.log(self.userModel.get("tokenlogin")); 
     } 
    }); 
}, 

Я читал, что .fetch() или .save() является основой способ делать что-то, но я не могу настроить свой UserModel, когда использую выборку. Когда я делаю это, путь jQuery.ajax(), хотя и действует по желанию.

Может кто-нибудь объяснить мне разницу между делать это в $ .ajax() или делать это с помощью .fetch и т.д.

редактировать:

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

var UserModel = Backbone.Model.extend({ 
    defaults: { 
     handle: '', 
     email: '', 
     uuid: '', 
     userpic: '', 
     tokenlogin: '' 
    }, 
}); 
+0

Backbone.fetch и Backbone.save все в конечном итоге вызывают jQuery.ajax. В конфигурации вашей модели должно быть что-то не так. Можете ли вы показать код модели? –

+0

Я добавил код модели выше ... – iggy2012

ответ

2

Вы должны быть в состоянии сделать это, перекрывая fetch метод вашей модели:

UserModel = Backbone.model.extend({ 
    defaults: { 
    // .... 
    }, 

    // set url for model (assumes app root is http://localhost/app) 
    url: '/api/User.php', 

    // pass custom parameters on fetch 
    fetch: function (options) { 
    var options = _.clone(options); 

    // set our custom parameters 
    options.req = "REQUSERSIGNIN"; 
    options.platform = "WEB"; 
    options.useremail = $('#userSignIn #userEmail').val(); 
    options.userpass = $('#userSignIn #userPassword').val(); 

    // call the Backbone method, which in turn calls $.ajax 
    Backbone.sync.apply(this, options); 
    }, 
}); 

Метод Parse вашей модели должен обрабатывать ответ с сервера просто отлично, так как кажется, что есть один к одному (response.handle будет соответствовать model.attributes.handle). Не видя фактического ответа, это немного сложно понять.

+0

Спасибо! Отлично! – iggy2012

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