Как вы развязываете действие в азоте?

В Nitrogen, веб-платформе Erlang, вы связываете такие действия:

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

но если после этого ты бежишь

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

затем вы дважды подключаете действие.

Как отключить предыдущее действие или все действия элемента?


person Community    schedule 02.01.2010    source источник


Ответы (2)


Поскольку события в азоте связываются с использованием метода связывания jquery. Вы можете использовать unbind, чтобы отвязать их. В настоящее время не существует api азота для отмены привязки события, но вы можете вывести код javascript, чтобы отвязать его самостоятельно, если хотите.

см. action_event.erl, чтобы узнать, как привязка javascript выводится. Вы можете создать аналогичное действие / событие, удаляющее привязку.

person Jeremy Wall    schedule 03.01.2010
comment
Я должен добавить, что я никогда не сталкивался со случаем, когда мне действительно нужно было бы отвязать действие в Nitrogen, и я написал одно из наиболее сложных приложений, которые я видел, в части обработки событий и настраиваемых элементов. Для чего именно вам нужен этот функционал? - person Jeremy Wall; 03.01.2010
comment
Моя проблема описана здесь: groups.google.com/group/nitrogenweb/browse_thread/ thread / Я постараюсь превратить это в вопрос о переполнении стека. - person pupeno; 03.01.2010
comment
Джереми, спасибо за ответы. Вот вопрос в SO: stackoverflow.com/questions/1994490/ - person pupeno; 03.01.2010

Я тоже искал "беспорядок" и не нашел. Моя работа заключалась в том, чтобы использовать wf: replace () элемент, к которому было подключено событие, и подключить заменяющий элемент; Я надеюсь, что javascript в конечном итоге заметит, что прежняя привязка никогда не может быть вызвана, а затем соберет ее. Не знаю, насколько дороги такие брошенные переплеты. Моим контекстом была ленивая загрузка страницы, так что кнопка сначала показывала заглушку, но при нажатии загружала произвольно большой контент и с этого момента переключала скрытие / отображение.

Помимо того, что я нервничаю из-за сложности сборки мусора javascript, я беспокоюсь, что это может быть плохой шаблон, и хотел бы услышать опыт других. Единственная альтернатива, которая приходит мне на ум, - сохранить состояние (например, данные) в исходном элементе и передать это состояние обратно с сообщением о событии, чтобы тот же обработчик событий действовал на "unloaded-> loaded_show-> loaded_hide-> loaded_show" "переходы. Но я бы предпочел не перезванивать серверу для простого перехода скрыть / показать.

person Community    schedule 07.05.2015