在我的Backbone视图中,在initialize函数中我做的事情如下:
initialize: function () {
$(this.el).on('click', '.button', function () {
$(this).fadeTo(0.5);
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎违背了Backbone的使用惯例events.用events哈希重写:
events: { 'click .button': 'fadeButton' },
fadeButton: function () {
$(this).fadeTo(0.5);
}
Run Code Online (Sandbox Code Playgroud)
问题在fadeButton于其范围内的值与this使用时的值不同.on().使用events哈希这样做的正确方法是什么?
就像paul所说,Backbone会自动为视图本身设置事件回调的上下文.所以this在回调中将是视图实例.
因此,您可以使用视图的范围选择器函数来获得您想要的效果...
events: {
'click .button': 'fadeButton'
},
fadeButton: function () {
this.$('.button').fadeTo(0.5);
}
Run Code Online (Sandbox Code Playgroud)
......但如果你已经有了类具有多种元素"button"在你看来,这会淡化所有这些,在这种情况下,你可以随时使用事件对象的jQuery让你获得活动对象:
fadeButton: function (event) {
$(event.target).fadeTo(0.5);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |