wave.getState() возвращает ноль

При попытке вызвать wave.getState() в моем гаджете Google Wave я получаю нулевое значение (без объекта состояния). Как я могу инициализировать объект состояния Wave? Я работаю в Песочнице Волны.

Мой ModulePrefs содержит следующее:

    <Require feature="wave" />
    <Require feature="rpc"/>

При поиске исправления я получил функцию "rpc" из поста некоторых групп Google, но, похоже, ничего не помогло.

Гаджет содержит плагин jQuery, который определяет используемые мной классы (не показаны), присоединяет обработчик событий к ссылке, отображаемой в режиме редактирования, и настраивает методы обратного вызова с помощью инициализатора гаджета волны Google:

$.fn.extend({
     $.gork.InitPass.newButtonClick = function newButtonClick() {
           var jer = new $.gork.InitPass.Player('Jeremias', 12, 2);
           var delta = {};
           delta[jer.name] = jer.serialize();
           wave.getState().submitDelta(delta);
     };

    $.gork.InitPass.modeCallback = function modeCallback() {
           var state = wave.getState();
           var mode = wave.getMode();
           $.gork.InitPass.getContainer().ipCombatState(state, (mode == wave.Mode.EDIT));
    };

    $.gork.InitPass.stateCallback = function stateCallback() {
      $.gork.InitPass.getContainer().ipCombatState(
      wave.getState(), (wave.getMode() == wave.Mode.EDIT));
      alert('state');
    };

    $.gork.InitPass.init = function init() {
     if (wave && wave.isInWaveContainer()) {
       var mode = wave.getMode();
       $('.gork-ip-container').ipCombatState(null, (mode == wave.Mode.EDIT));

       wave.setModeCallback($.gork.InitPass.modeCallback);
       wave.setStateCallback($.gork.InitPass.stateCallback);
     }
    };
})(jQuery);
gadgets.util.registerOnLoadHandler($.gork.InitPass.init);

 $(function ready() {
  $.gork.InitPass.getContainer().find('.gork-ip-edit .addSection a.newButton').click(
   $.gork.InitPass.newButtonClick);
 });

Итак, здесь есть две основные функциональные возможности:

  • Когда режим изменяется, вызывается ipCombatState(...). Это изменяет внешний вид гаджета, когда пользователь переводит гаджет в режим редактирования (CTRL+E), скрывая вид DIV и отображая правку DIV.
  • Предполагается, что обратный вызов newButtonClick (который прикреплен к ссылке "a.newButton" в контейнере редактирования) добавляет Джеремиаса (символ Нейта Shadowrun) в состояние гаджета, так что он будет отображаться в виде строки таблицы в режиме редактирования.

Я убедился, что вызывается метод инициализатора, и переключатель режима просмотра / редактирования работает просто отлично (за исключением того, что состояние равно нулю). Когда я нажимаю на ссылку новой кнопки (ссылка внизу в режиме редактирования) и запускаю обработчик newButtonClick, я получаю сообщение об ошибке, потому что wave.getState() также возвращает ноль.

Как я могу инициализировать волновое состояние, чтобы я мог работать с ним?

Целью моего гаджета будет отслеживание порядка боевой инициативы в настольной игре Shadowrun (4-е издание). Вы можете проверить это в Wave и посмотреть, что у меня есть:

http://gorkwobble.herobo.com/wave/init-pass.xml

Фактический код JavaScript выводится на:

http://gorkwobble.herobo.com/wave/init-pass.js

PS Если кто-то из игроков Shadowrun прочтет это и захочет услышать об этом, когда я включу гаджет, оставьте комментарий, и я вам помахаю.

0 ответов

Другие вопросы по тегам