backbone.js のチュートリアルを見てきましたが、フォーム データを新しいオブジェクトに保存して、後でデータベースに保存する方法についてまだ混乱しています。
したがって、基本的には、ユーザーが入力して真または偽の質問を生成する「真/偽」と呼ばれる動的に生成されたフォームがあります。とりあえず、送信時に、そのフォーム データをオブジェクトに保存する必要があります。それが理にかなっていることを願っています。現在、console.log には 1 つの属性しか表示されていませんが、必要なのは、コードで定義された、編集された属性とデフォルト値です。アドバイス/ヘルプは大歓迎です。はい、私はRTFMを持っています
(function() {
window.App = {
Models: {},
Collections: {},
Views: {}
};
App.Models.TestTypes = Backbone.Model.extend({
});
App.Collections.TestTypes = Backbone.Collection.extend({
model: App.Models.TestTypes
});
App.Views.TestTypes = Backbone.View.extend({
el: $('div.add-btn'),
events: {
'click button.btn-add-tf' : 'addTrueFalse',
'click button.btn-add-mult' : 'addMult',
'click button.btn-add-short' : 'addShort',
'click button.btn-add-essay' : 'addEssay'
},
// event handling functions
addTrueFalse: function(e) {
e.preventDefault();
this.addTrueFalseForm();
this.addTrueFalsePreview();
},
addTrueFalseForm: function(e) {
$('.new-questions').append('<div class="add-question"><form action="">' +
'<div class="remove-btn">x</div>' +
'<span style="font-weight: normal;;"><em>True / False</em></span></p>' +
'<label for="Question_description">Question</label><br />' +
'<input type="text" name="question[description]" class="tf-desc" /><br />' +
'True <input type="radio" name="question_answer[answer]" id="question_answer[correct]" value="1" />' +
' False <input type="radio" name="question_answer[answer]" id="question_answer[correct]" value="0" /><br />' +
'<input type="submit" value="Save" /></form>' +
'</div>');
},
addTrueFalsePreview: function(e) {
$('#test-preview').append("<p>Preview</p>");
}
});
App.Views.NewTestType = Backbone.View.extend({
el: '.new-questions',
events: {
'submit': 'addTest'
},
addTest: function(e) {
e.preventDefault();
var addTestData = $(e.currentTarget).find('.tf-desc').val();
var task = new App.Models.TestTypes({ description: addTestData });
this.collection.add(task);
console.log(task);
}
});
var testTypesCollection = new App.Collections.TestTypes([
{
defaults: {
questions: 0,
type: "",
description: "",
require_review: 0,
max_points: 0,
is_bonus: 0,
order: 0,
case_sensitive: 0,
answer: "",
points: 0,
is_correct: 0
}
}]);
var addTest = new App.Views.NewTestType({ collection: testTypesCollection });
var question = new App.Views.TestTypes({ collection: testTypesCollection });
})();