0

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 });

})();
4

1 に答える 1