2017-01-18 6 views
-1

Я должен сохранить таблицу данных полностью POST при нажатии одной кнопки.Сохранение данных таблицы целиком в backbone.js

Моя таблица выглядит следующим образом enter image description here

пожалуйста, вы можете помочь мне решить this.I знает сохранять каждую строку в backbone.I думать экономии всех данных можно с помощью цикла, пожалуйста, предложите мне, если есть какой-либо другой лучше опции.

+1

[Сохранение коллекции] (http://stackoverflow.com/a/41042916/1218980) и [как заставить запрос POST] (HTTP : //stackoverflow.com/a/41091957/1218980) –

+0

Вы можете использовать библиотеки привязки данных, чтобы избежать циклирования. Хотите ли вы это сделать или просто добавить цикл, зависит от ваших обстоятельств, о которых мы совершенно не знаем. Другими словами, на ваш вопрос не может быть дан ответ, если вы не добавите больше подробностей реализации, почему вы хотите избежать циклов и т. Д. –

ответ

0

Это не должно быть проблемой, если ваши данные находятся в Backbone.Collection.

Допустим, у вас есть эта

var PatientCollection = Backbone.Collection.extend({ 
    // You need to define the url on the collection, 
    // that will be used later in the request 
    // This is the endpoint where you want to send the POST request 
    url:'/add/your/url/here' 
}); 

var Patients = new PatientCollection([ 
    { id: '001' 
     patient: '001_Patient', 
     DOS: '2017-01-18' 
    }, 
    { id: '002' 
     patient: '002_Patient', 
     DOS: '2017-01-18' 
    } 
]); 

Backbone.Sync('create', Patients); 

Так что здесь происходит то, что магистральная отправит POST запрос (вот что create параметр служит для) к URL, который был установлен ранее при создании конструктора PatientCollection а массив как полезная нагрузка, содержащая все models, которые были в коллекции.

Таким образом вы отправляете все свои данные из коллекции на сервер сразу, и нет необходимости перебирать коллекцию.

Для получения дополнительной информации о Backbone.Sync и как это работает проверка here

0

Привет вы можете использовать коллекцию связующего для связывать данные .Здесь является примером

здесь HTML- http://jsfiddle.net/4r8ET/33/

<head> 
<!--The templates--> 
<script id="htmlTemplate" type="text/template"> 
    <table> 
     <thead> 
      <tr> 
       <th>First Name</th> 
       <th>Last Name</th> 
      </tr> 
     </thead> 
     <tbody> </tbody> 
    </table> 
    <input type='button' value='submit' class='save' /> 
    <div id='result'></div> 
</script> 

<script id="rowTemplate" type="text/template"> 
    <tr> 
     <td> 
      <input type='text' data-name='patient'> 
     </td> 
     <td> 
      <input type='text' data-name='dos'> 
     </td> 
     <td> 
      <input type='text' data-name="m1"> 
     </td> 
    </tr> 
</script> 
</head> 

<body> 
<div id="anchor"></div> 
</body> 

Вот код Javascript

var SingleEntry = Backbone.Model.extend({}); 

var entry1 = new SingleEntry({"patient":"patient1","dos":"2014-02- 12","m1":1343832975291}); 
var entry2 = new SingleEntry({"patient":"patient2","dos":"2014-01-12","m1":1343832975291,}); 
var entry3 = new SingleEntry({"patient":"patient3","dos":"2014-03-12","m1":1343832975293,}); 

var CollectionOfEntries = Backbone.Collection.extend({ 
    model: SingleEntry, 
    initialize: function(){ 
    this.models.push(entry1); 
    this.models.push(entry2); 
    this.models.push(entry3); 
    }, 
}); 

var View = Backbone.View.extend({ 
initialize: function(){ 
    this.collection = new CollectionOfEntries(); 
    this.rowHtml = $('#rowTemplate').html(); 
    this.elHtml = $('#htmlTemplate').html(); 

    var elManagerFactory = new Backbone.CollectionBinder.ElManagerFactory(this.rowHtml, "data-name"); 
    this._collectionBinder = new Backbone.CollectionBinder(elManagerFactory); 
}, 

render: function(){ 
this.$el.html(this.elHtml); 
console.debug(this.collection); 
this._collectionBinder.bind(this.collection, this.$el); 
return this; 
}, 

close: function(){ 
this._collectionBinder.unbind(); 
}, 
saveData:function(event){ 
console.log(' save collection',this.collection) 
    alert(JSON.stringify(this.collection.toJSON())) 
}, 
events:{ 
'click .save':'saveData' 
} 

}); 
$(document).ready(function(){ 
var view = new View(); 
view.render(); 
$('#anchor').append(view.el); 
console.debug(view); 
}); 

вы, чтобы добавить эти 2 библиотеки

https://cdnjs.com/libraries/backbone.modelbinder