【发布时间】:2016-05-07 19:56:42
【问题描述】:
我有一个视图(我称之为父视图),其中有另一个视图(子视图)。父视图具有使用“上下文菜单”事件的元素(右键单击时,会显示一组菜单选项)。当用户从菜单中选择一个项目时,它会触发一个回调。从那里,我在子视图中触发一个事件。这是我的触发器:
that.trigger("editFileFolder", {fileType: fileType});
在我的子视图的初始化函数中,我有这个:
this.listenToOnce(this.options.parent,'editFileFolder', this.editFileObjectEvent);
editFileObjectEvent 函数调用另一个要创建的视图(一个带有一些字段的对话框、一个取消按钮和一个保存按钮)。如果用户单击取消,一切正常。如果用户单击保存按钮,视图会执行 ajax 调用,保存到服务器并关闭对话框。但是,下次用户右键单击并选择相同的菜单项时,editFileObjectEvent 会被调用两次(导致对话框被两次添加到父视图中)。
谁能解释为什么它被调用两次以及如何解决这个问题?如果您想查看特定代码,请告诉我,我可以添加它。有很多,所以我不想压倒这个问题。
谢谢
【问题讨论】:
-
我认为调用
this.listenToOnce的函数被调用了两次 -
嗯,看来你是对的。有没有办法确定这个监听器是否已经到位,所以我可以避免再次添加它?
-
我不认为公共 API。不过你可以看看
this._listeningTo
标签: javascript jquery backbone.js