Backbone 表单提交事件中的模型

Backbone model in form submit event

似乎 this.model return 在表单提交事件函数中未定义,即使在我执行 _bindall() 之后也是如此。渲染功能还可以。

initialize: function() {
  _.bindAll(
    this, 
    "render", 
    "processFormEditJobSubmit"
  );
},

表单提交事件:

processFormEditJobSubmit: function(e) {  
  e.preventDefault();
  e.stopImmediatePropagation();
  console.log(this.model); //undefined
}

如何解决这个问题?还是我的绑定做错了?我很可能只会在 sessionStorage 中序列化模型并在提交函数中反序列化它。我更愿意避免破解我的代码。谢谢指点。

您显示的代码没有错误,但示例不完整,这是一个有效的代码片段:

var MyView = Backbone.View.extend({

  el: '#view',

  events: {
    'click button.a': 'processFormEditJobSubmit'
  },

  initialize: function() {
    _.bindAll(
      this,
      "render",
      "processFormEditJobSubmit"
    );
  },
  
  render: function() {
    this.$('button.b').click(this.processFormEditJobSubmit);
  },

  processFormEditJobSubmit: function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    console.log(this.model.get('prop')); //not undefined
  }

});

new MyView({
  model: new Backbone.Model({prop: 'here'})
}).render();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>

<div id="view">
  <button class="a">
    event hash
  </button>
  <button class="b">
    jquery handler
  </button>
</div>

如果我遗漏了什么,请告诉我,我会更新代码段。