2010-01-02 2 views
1

В 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 }), 

тогда вы получите действие проводного дважды.

Как вы можете отказаться от предыдущего действия или всех действий элемента?

ответ

1

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

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

+0

Я должен добавить, что я никогда не сталкивался с ситуацией, когда мне действительно нужно было отвязать действие в азоте, и я написал одно из более сложных приложений, которые я видел, поскольку обработка событий и пользовательские элементы идут. Для чего вам нужна эта функциональность? –

+0

Моя проблема описана здесь: http://groups.google.com/group/nitrogenweb/browse_thread/thread/c6d9927467e2a51a Я попытаюсь превратить это в вопрос переполнения стека. – Pablo

+0

Джереми, спасибо за ответы. Вот вопрос в SO: http://stackoverflow.com/questions/1994490/how-to-keep-track-of-a-process-per-browser-window-and-access-it-at-each-event- в – Pablo

0

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

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