首页 > 解决方案 > BackboneJS,保存方法被触发两次

问题描述

我有一个应用程序,其中我不使用主干视图,只使用主干模型。

结构是下面的结构。

#html
<tr>
  <td >Personal</td>
  <td id="personal-data" data-content="<?=str_replace('"',"'",json_encode($data))?>">
     <input type="text" name="name" placeholder="Name"><br>
     <input type="text" name="address" placeholder="Address">
  </td>
<tr>
#PersonalModel.js
var Personal = Backbone.Model.extend({
   urlRoot: "/api/personal"
});
$(document).ready(function () {
  var personal = new Personal($('td#personal-data').data('content'));
  $('td#data-ept *').on('change', function () {
    personal.set(this.name, this.value);
    personal.save()

  });
});

this.name 始终等于要持久化或更新的模型属性之一。

标签: backbone.jsbackbone-model

解决方案


问题是我也在使用一个验证表单的插件。因此,每次我更改输入值时,都会有一个 div 发生变化。我用这段代码解决了问题

$(document).ready(function () {
  var personal = new Personal($('td#personal-data').data('content'));
  $('td#data-ept *[name]').on('change', function () {
    personal.set(this.name, this.value);
    personal.save()
  });
});

推荐阅读