RMo*_*sey 7 javascript null jquery google-wave getstate
当我尝试在我的Google Wave小工具中调用wave.getState()时,我返回null(没有状态对象).如何初始化Wave状态对象?我在Wave Sandbox工作.
我的ModulePrefs包含以下内容:
<Require feature="wave" />
<Require feature="rpc"/>
Run Code Online (Sandbox Code Playgroud)
我在搜索修复程序时从一些谷歌小组发布了"rpc"功能,但它似乎没有任何帮助.
小工具包含一个jQuery插件,它定义了我使用的类(未显示),将事件处理程序附加到以编辑模式显示的链接,并使用google wave小工具初始化程序设置回调方法:
$.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);
});
Run Code Online (Sandbox Code Playgroud)
所以这里有两个主要的功能:
我已经验证了调用初始化方法,并且视图/编辑模式开关工作正常(除了状态为null).当我单击新按钮链接(编辑模式下的链接)并触发newButtonClick处理程序时,我收到错误,因为wave.getState()也返回null.
如何初始化波状态以便我可以使用它?
我的小工具的目的是在Shadowrun桌面游戏(第4版)中跟踪战斗主动性顺序.你可以在Wave中测试它,看看我到目前为止:
http://gorkwobble.herobo.com/wave/init-pass.xml
实际的javascript代码外部化为:
http://gorkwobble.herobo.com/wave/init-pass.js
PS如果有任何Shadowrun玩家阅读此内容,并希望在我让小工具正常工作时听到它,请发表评论,我会挥手告诉您.