我正在模拟一个待办事项列表,当文本字段失去焦点或用户按下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


希望能有所帮助!

09-27 04:21