似乎this.model在表单提交事件函数中返回一个undefined,即使在我执行_bindall()之后也是如此。渲染功能正常。
initialize: function() {
_.bindAll(
this,
"render",
"processFormEditJobSubmit"
);
},
表单提交事件:
processFormEditJobSubmit: function(e) {
e.preventDefault();
e.stopImmediatePropagation();
console.log(this.model); //undefined
}
如何解决这个问题?或者我对绑定做错了吗?我会在sessionStorage中序列化模型并在submit函数中反序列化它。我宁愿避免黑客入侵我的代码。谢谢你的任何指示。
答案 0 :(得分:0)
您显示的代码中没有错误,但示例不完整,这是一个正常工作的代码段:
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>
如果有什么我错过了,请说明,我会更新代码段。