Прекратить поле наблюдения от наблюдения - PullRequest
0 голосов
/ 15 марта 2010

Я использую помощник по рельсам наблюдения_ для наблюдения за вводом текстового поля:

<%= observe_field :word_word, :frequency  => 0.25, :function => "wordObserve('#{@word_str}')" %>

Когда ввод текстового поля становится определенным значением, я бы хотел прекратить наблюдение. Я пробовал оба Event.stop () и Event.stopObserving (элемент, eventName, обработчик), но ни один, кажется, не работает. Есть идеи?

1 Ответ

1 голос
/ 15 марта 2010

Чтобы остановить наблюдателя, вы должны вызвать метод stop для наблюдателя. По умолчанию observe_field helper, создает неназванного наблюдателя. Вы должны исправить помощника, чтобы создать именованного наблюдателя.

Добавьте этот патч к вашему app/helpers/application_helper.rb.

module ActionView::Helpers::PrototypeHelper

  def observe_field(field_id, options = {})
    poller_name, key = options.delete(:poller_name), "new Form.Element.Observer"

    poller_name ? super : 
        super(field_id, options).gsub(Regexp.new(Regexp.escape(key)), 
           "var #{poller_name} = #{key}") 
  end
end

Создайте имя field observer в вашем представлении:

<%= observe_field :word_word, :frequency  => 0.25, 
                  :poller_name => :word_word_poller
                  :function => "wordObserve('#{@word_str}')" %>

В функции обратного вызова java-script вызовите word_word_poller.stop, чтобы прекратить наблюдение за полем.

Ссылка

1) Как удалить Form.Element.Observer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...