我一直致力于在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
视图页面上执行刷新后,小工具才会检索这些首选选项。
现在得到这个:我们已经尝试将这些偏好设置作为home
和canvas
视图之间的参数传递。
(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.*
对象交谈,这个对象没有“绑定”到我的特定小工具,直到我刷新页面(然后强制它绑定到画布视图)。请帮忙!
答案 0 :(得分:0)
看起来,谷歌用于在home
/ canvas
次观看之间切换的新AJAX加载技术存在问题。我们联系了Google的iGoogle / OpenSocial团队,这就是我们得到的回复。他们能够使用自己的小工具重现错误。在他们修复之前,使用http://google.com/ig?aig=0访问iGoogle应该可以帮助解决问题。