Привязка к глобальному событию с использованием Spine & jQuery - PullRequest
0 голосов
/ 09 февраля 2012

Я пробую Spine.js в первый раз, и в настоящее время я конвертирую существующий файл js, который использует jQuery.

В настоящее время он работает примерно так:

$('document').bind('facebook:ready', function () {
    $('.myElement').click(callback);
});

Там, где он в основном ожидает события «facebook: готово», которое будет инициировано в документе, а затем присоединяет щелчок к .myElement.

До сих пор я мог проводить обычные события, следуя документации для контроллеров, http://spinejs.com/docs/controllers

myController = Spine.Controller.sub({
    el: $('#mainViewElement')
    , events: hashOfEventsToNamesAndHandler
});

Как правильно преобразовать старый код в Spine? И, как связанный с этим вопрос, поскольку у меня есть глобальный объект, который я использую для пространства имен, было бы лучше присоединить к нему мое событие «facebook: готово» вместо документа?


Одна вещь, о которой я думал, - у меня может быть флаг, который устанавливается, когда срабатывает «facebook: готово». Затем я присоединяю обработчик кликов к .myElement, используя обычный синтаксис Spine.Controller, и когда срабатывает клик, я проверяю, был ли установлен этот флаг, если нет, сразу возвращаюсь. Я просто не уверен, что это лучший способ сделать это ...

1 Ответ

1 голос
/ 15 февраля 2012

Событие facebook: ready - это то, что происходит вне Spine, поэтому вы не сможете обработать его с помощью хэша событий.Действия в хэше событий относятся к элементу, на котором активен контроллер.

В Spine вы не ограничены атрибутами событий.Вы можете использовать все, что вы хотите.Хэш событий - это всего лишь ярлык.Чтобы настроить более сложные вещи, вы могли бы что-то сделать в конструкторе.

Я не знаю иерархию вашего приложения и сколько контроллеров нужно будет обновлять при запуске события facebook.Но давайте предположим, что за ним будет следить только один контроллер, и он будет информировать других о том, что только что произошло ... на случай, если нужно будет задействовать какую-то другую логику.редактировать: реализованный код: http://jsfiddle.net/SpoBo/zAwKk/3/

Извинения за CoffeeScriptness моего кода.Это действительно стоит изучить, особенно потому, что вы можете многому научиться из источника в Spine.

...