Javascript Backbone.js表单数据

Javascript Backbone.js表单数据,javascript,jquery,backbone.js,underscore.js,Javascript,Jquery,Backbone.js,Underscore.js,我一直在看backbone.js教程,但对于如何将表单数据保存到新对象中,以便以后保存到数据库中,我仍然感到困惑 因此,基本上我有一个动态生成的表单,称为“真/假”,用户填写该表单以生成一个真或假问题。现在,在提交时,我需要将表单数据保存到一个对象。希望这是有道理的。现在它只在console.log中显示一个属性,但我需要的是编辑的属性加上代码中定义的默认值。非常感谢您的任何建议/帮助,是的,我有RTFM (function() { window.App = { Models: {},

我一直在看backbone.js教程,但对于如何将表单数据保存到新对象中,以便以后保存到数据库中,我仍然感到困惑

因此,基本上我有一个动态生成的表单,称为“真/假”,用户填写该表单以生成一个真或假问题。现在,在提交时,我需要将表单数据保存到一个对象。希望这是有道理的。现在它只在console.log中显示一个属性,但我需要的是编辑的属性加上代码中定义的默认值。非常感谢您的任何建议/帮助,是的,我有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 });

})();
(函数(){
window.App={
型号:{},
集合:{},
视图:{}
};
App.Models.TestTypes=Backbone.Model.extend({
});
App.Collections.TestTypes=Backbone.Collection.extend({
模型:App.Models.TestTypes
});
App.Views.TestTypes=Backbone.View.extend({
el:$('div.add-btn'),
活动:{
'单击按钮。btn添加tf':'addTrueFalse',
'单击按钮。btn添加多个':'添加多个',
'单击按钮。btn添加短消息':'添加短消息',
'点击按钮。btn添加文章':'附录'
},
//事件处理功能
addTrueFalse:函数(e){
e、 预防默认值();
这个.addTrueFalseForm();
这个.addTrueFalsePreview();
},
addTrueFalseForm:函数(e){
$('.新问题')。附加(''+
“x”+
'正确/错误

'+ “问题
”+ “
”+ “真的”+ “False
”+ '' + ''); }, addTrueFalsePreview:函数(e){ $(“#测试预览”)。追加(“预览”

”; } }); App.Views.NewTestType=Backbone.View.extend({ el:'新问题', 活动:{ “提交”:“添加测试” }, addTest:函数(e){ e、 预防默认值(); var addTestData=$(e.currentTarget).find('.tf desc').val(); var task=new App.Models.TestTypes({description:addTestData}); this.collection.add(任务); console.log(任务); } }); var testtypescolection=new App.Collections.TestTypes([ { 默认值:{ 问题:0,, 类型:“, 说明:“, 需要检查:0, 最高分数:0, 是奖金:0, 订单:0, 区分大小写:0, 答复:",, 分数:0,, _是否正确:0 } }]); var addTest=new App.Views.NewTestType({collection:testtypescolection}); var question=new App.Views.TestTypes({collection:testtypescolection}); })();
我将使用的CompositeView/CollectionView和ItemView来实现您的想法


如果您使用其中一个PHP restful框架来处理主干网,这将更加容易

是否需要将表单数据保留在客户端上?目前还不清楚表单与您将使用的模型或集合之间的关系。如果您不需要将表单数据放入客户端模型中,您可以在表单提交时从视图直接调用ajax。是的。表单数据用于创建考试,我认为允许在创建考试时查看该考试的功能将对我的用户非常有益,因为并非所有人都精通技术。我要做的与Stripes API文档类似:在我尝试主干网之前是一个旧的原型。这就是我要说的:啊,你存储的数据是问题,问题类型,等等?如果是这样的话,那么你似乎希望你的集合是一个问题集合,你需要一个带有属性的模型来捕获问题、问题类型等。这听起来像你要做的吗?是的,听起来和我要做的完全一样。我有php背景,而不是javascript,所以项目的这方面变得非常困难。你能给我指一下正确的方向吗?书籍、文章、提示等?