将表单复制到Backbone.js模型

时间:2012-07-12 05:38:54

标签: javascript model backbone.js

我有一张表格:

<form>
    <input type="text" name="email" >
    <input type="text" name="phone" >
    <input type="button" value="ok" />
</form>

单击按钮时,我想将表单值复制到相应的模型中。

我发现Backbone.ModelBinder会在值发生变化时自动将值复制到模型中,但这不是我想要的,我只想在单击按钮时复制值。

2 个答案:

答案 0 :(得分:0)

将自定义函数写入表单所在的视图中,并将其绑定到ok click事件:

events: {
  ...
  'click input[name="ok"]': 'copyFormToModel'
  ...
},

...

copyFormToModel: function() {
  var email = $('input[name="email"]').val();
  var phone = $('input[name="phone"]').val();

  // Perform some sort of validation

  this.model.email = email;
  this.model.phone = phone;
}

这不是最漂亮的答案,但如果你的页面只有一个小表单,那么使用一些库或插件可能有点矫枉过正。如果你想使用插件或库,那么对于你的情况,我认为backbone-forms可以做到这一点。它的功能是使用方法调用更新绑定到表单的模型,而不是每次更新字段。

答案 1 :(得分:0)

您可能需要此代码:

events: {
  ...
  'click input[value="ok"]': 'collectData2Model'
  ...
},

...
//suppose employee is your model
collectData2Model: function(e) {
    var employee = new Employee();
    var attr = {};
     $('input').each(function(){
            var input = $(this);
            attr[input.attr('name')] = input.val();
      });
       employee.bind('error',function(model,error){
            alert(error);
        });
      // set method will automatically call the model's validate method 
       employee.set(attr);
}