你怎么在氮气中取消一个动作?

时间:2010-01-02 22:44:12

标签: erlang nitrogen

Nitrogen, the Erlang web framework中,您可以执行以下操作:

wf:wire(send_message, #event { type=click, postback=send_message })

但如果在那之后你运行

wf:wire(send_message, #event { type=click, postback=send_message2 }),

然后你连接了两次动作。

如何取消上一个操作或元素的所有操作?

2 个答案:

答案 0 :(得分:1)

因为氮中的事件是使用jquery的bind方法绑定的。您可以使用unbind解除绑定。目前没有解除事件绑定的氮气API,但如果您愿意,可以输出javascript代码自行取消绑定。

有关如何输出绑定javascript的示例,请参阅action_event.erl。您可以创建一个删除绑定的类似操作/事件。

答案 1 :(得分:0)

我也在寻找“无线”并没有找到它。我的解决方法是wf:replace()事件所连接的元素,并连接替换元素;我希望javascript最终会注意到前面的绑定永远不会被调用然后垃圾收集它。我不知道这种废弃的绑定有多贵。我的上下文是一个延迟加载的页面,这样一个按钮最初会显示一个存根,但点击时会下载任意大的内容,从此切换隐藏/显示。

除了对javascript垃圾收集的复杂性感到紧张之外,我担心这可能是一种糟糕的模式,并且很想听听别人的体验。发生在我身上的唯一选择是将状态(例如数据)保留在原始元素中,并将该状态传回事件消息,以便相同的事件处理程序将作用于“unloaded-> loaded_show-> loaded_hide- > loaded_show“转换。但我宁愿不回电话服务器进行简单的隐藏/显示转换。