2016-04-29 4 views
1

Я пытаюсь сохранить данные формы на сервере с помощью API Deployd; но когда я нажимаю кнопку «Сохранить», новый документ создается на сервере, но не содержит данных. Я не понимаю, как это может работать; Думаю, мне нужно передать данные в модель, чтобы ее сохранить? Как мне это сделать? Я думал, что представление уже связано с шаблоном и моделью. Я использую Requirejs, MarionetteJS и Handlebars. Вот код.Сохраните данные формы с помощью handlebarsjs и marionettejs

МОДЕЛЬ:

define(['underscore','backbone'], function(_, Backbone){ 
var Student= Backbone.Model.extend({ 
    urlRoot: '/students', 
    defaults: { 
    nameStudent: '', 
    lastnameStudent: '' 
    }, 
    initialize: function(){ 
    console.log('studentModel: initiated'); 
    }, 
}); 
return Student; 
}); 

ВИД:

define([ 
'jquery', 
'underscore', 
'backbone', 
'marionette', 
'handlebars', 
'js/models/student', 
'text!templates/forms/studentFormAdd.html' 

], function($, _, Backbone, Marionette, Handlebars, studentModel, studentFormAddTemp){ 

    var studentFormAdd = Backbone.Marionette.ItemView.extend({ 
     model: studentModel, 
     template: Handlebars.compile(studentFormAddTemp), 
     events: { 
      'click #saveBtn': function(){ 
       this.model.save();   
       console.log(this.model.toJSON()); 
       console.log('saveBtn event: initiated'); 
      } 
     }, 
     initialize: function(){ 
      console.log('studentFormAdd: initiated'); 
      this.model = new studentModel(); 
      this.model.on('change', this.render); 
     }, 
    }); 

Мой шаблон имеет следующий синтаксис:

<div> 
<form> 
Student Name<br> 
<input type="text" name="nameStudent" value="{{nameStudent}}" placeholder="Student name"/> 
<br> 
Student lastname<br> 
<input type="text" name="lastnameStudent" value="{{lastnameStudent}}" placeholder="Student lastname"/><br> 
</form> 
</div> 

ответ

1

Backbone не использует два способа связывания, так:

this.model.save();   

в вашем обработчике событий saveBtn пуст. Если вы хотите реального времени наиболее двухстороннюю связывания, вы можете использовать: https://github.com/theironcook/Backbone.ModelBinder или https://github.com/NYTimes/backbone.stickit

Если вы wan't просто потреблять данные формы на покориться и сохранить его в модели, вы можете использовать https://github.com/marionettejs/backbone.syphon.

var data = Backbone.Syphon.serialize(this); 
this.model.set(data); 

this.model.save(); 
+0

Большое вам спасибо! Вы спасли меня! (каламбур) – jalx

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

  • Нет связанных вопросов^_^