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>
如果我遗漏了什么,请告诉我,我会更新代码段。
似乎 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>
如果我遗漏了什么,请告诉我,我会更新代码段。