我正在模拟一个待办事项列表,当文本字段失去焦点或用户按下Enter键时,文本字段的值将保存在模型中。
//view etc.
events:{
"blur .task": "doneEditing",
"keypress .task": "doneEditing"
},
doneEditing: function(e){
if(e.which && e.which != 13) return;
e.preventDefault();
//model saving code
}
问题在于,按下Enter键会触发doneEditing,然后发生模糊并再次触发doneEditing。我可以使用一些技巧来找到一种解决方法,但是我想知道主干是否可以仅触发任一事件。
谢谢。
最佳答案
如果这两个事件在较短的时间间隔内发生,则可以使用underscore.js
库的方法(主干的硬依赖性,因此无论如何都可以使用它)throttle
方法可以在短时间内停止太多调用。这是documentation的链接。
还有一个例子:
doneEditing: _.throttle(function(e) {
// Copy your event handling here
}, 100), // The number here defines the time threshold within which the function can be called only once
希望能有所帮助!