当用户输入输入字段时,我想更新部分视图。最初,我绑定到View的keyup
字段中的events
事件侦听器,并且运行良好:
window.AppView = Backbone.View.extend({
el: $("#myapp"),
events: {
"keyup #myInput": "updateSpan",
}, ...
updateSpan: function() {
this.span.text(this.input.val());
}, ...
});
但后来我意识到keyup
经常更新并使应用变慢。所以我决定使用typeWatch plugin,因此事件只会触发用户停止输入。但现在我不知道如何在Backbone中设置自定义事件监听器。目前我有这个:
window.AppView = Backbone.View.extend({
initialize: {
var options = {
callback: function(){
alert('event fired');
this.updateSpan;
},
wait:750
}
this.input.typeWatch(options);
}, ...
updateSpan: function() {
this.span.text(this.input.val());
}, ...
});
两个问题:
updateSpan
没有被解雇。我想我在回调中错误地使用了this
,但是我应该怎么做呢?initialize
现在是设置typeWatch事件侦听器的正确位置,还是可以像以前一样继续使用events
字段?答案 0 :(得分:1)
你实际上并没有打电话给updateSpan
,你是对的,this
不是正确的事。最简单的解决方法是首先将视图捕获到另一个变量中:
var v = this;
var options = {
callback: function() {
alert('event fired');
v.updateSpan();
},
wait: 750
};
this.input.typeWatch(options);
至于你的第二个问题,通常我会在initialize
中添加这样的功能(如果它在基本元素上)和render
如果它不是,所以我认为在这种情况下,你可能做对了。