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 прочтет это и захочет услышать об этом, когда я включу гаджет, оставьте комментарий, и я вам помахаю.