Google Gadget画布视图无法与gadgets.views或.params交谈,直到刷新?

时间:2011-08-04 21:39:39

标签: javascript opensocial google-gadget

我一直致力于在iGoogle上运行的小工具。事实上,它已经完成,除了一个令人讨厌的错误,我们正在寻找一个噩梦般的追捕。

请注意,代码段在CoffeeScript中;它是在我们为谷歌主办之前编译成JS的。我们也将Backbone.js用于我们的代码,但这不应该有太大的区别,因为我们所有的Backbone特定代码(initialize方法等)工作得很好;我已经能够在Backbone内容之外隔离代码的问题部分

小工具将首选选项列表保存为Google的gadgets.prefs对象,作为竖线分隔的字符串(55|34|101)。

prefs = new gadgets.Prefs()
prefs.set('paramname','55|34|101')

这种保存发生得很好,随后对get的任何调用pref工作正常。它们甚至可以通过prefs.get视图中的home调用来阅读。从home视图切换到canvas视图时,小工具无法get这些偏好设置(来自canvas视图)。

prefs = new gadgets.Prefs()
prefs.get('paramname')

只有在整个canvas视图页面上执行刷新后,小工具才会检索这些首选选项。

现在得到这个:我们已经尝试将这些偏好设置作为homecanvas视图之间的参数传递。

(home view)
params = 
    'paramname': '55|34|101'
gadgets.views.requestNavigateTo('canvas', params)

(canvas view)
@params = gadgets.views.getParams()

这已成功将我们发送至canvas,但在将home切换为canvas并尝试与gadgets.views.getParams()通话后,会返回一个空对象。只有刷新完成后,小工具才会处理相同的调用,找到参数并使用它们。

在两个视图中,最后一段代码都是......

gadgets.util.registerOnLoadHandler init

调用我们的init()函数...

init = ->
    @params = gadgets.views.getParams()

...返回一个空对象,除非我们刷新页面。

知道为什么会这样吗?我不能正确“启动”gadgets.*这些东西吗?这几乎就像我正在与一个gadgets.*对象交谈,这个对象没有“绑定”到我的特定小工具,直到我刷新页面(然后强制它绑定到画布视图)。请帮忙!

1 个答案:

答案 0 :(得分:0)

看起来,谷歌用于在home / canvas次观看之间切换的新AJAX加载技术存在问题。我们联系了Google的iGoogle / OpenSocial团队,这就是我们得到的回复。他们能够使用自己的小工具重现错误。在他们修复之前,使用http://google.com/ig?aig=0访问iGoogle应该可以帮助解决问题。