Google Gadget画布视图无法与Gadget对话.视图或.params,直到刷新
Google Gadget canvas view unable to talk to gadgets.views or .params until refresh?
我一直在开发一个可以在google中运行的小工具。事实上,它已经完成了,除了一个令人讨厌的bug,我们正在经历一场噩梦般的追捕时间。
请注意,代码片段是在CoffeeScript;在我们托管给Google之前,它被编译成JS。我们也使用Backbone.js的代码,但这应该没有太大的区别,因为我们所有的骨干特定的代码(initialize
方法等)工作得很好;我已经能够将问题部分的代码隔离在我们的主干内容之外。
该小工具将首选选项列表保存为Google的gadgets.prefs
对象,作为一个管道分隔的字符串(55|34|101
)。
prefs = new gadgets.Prefs()
prefs.set('paramname','55|34|101')
这个保存发生得很好,并且对get
的任何后续调用都可以正常工作。它们甚至可以通过home
视图中的prefs.get
调用来读取。当从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()
交谈后,返回一个空对象。只有在刷新完成后,gadget才会处理相同的调用,查找参数并使用它们。
在两个视图中,运行的最后一段代码是…
gadgets.util.registerOnLoadHandler init
调用init()
函数…
init = ->
@params = gadgets.views.getParams()
…返回一个空对象,除非我们刷新页面。
知道为什么会这样吗?我没有"kickstart"gadgets.*
的东西正确吗?这几乎就像我在与一个没有"绑定"到我的特定小工具的gadgets.*
对象交谈,直到我刷新页面(然后强制它绑定到画布视图)。请帮助!
看起来,这是Google在home
/canvas
视图之间切换时使用的新AJAX加载技术的问题。我们联系了谷歌的iGoogle/OpenSocial团队,这就是我们得到的回应。他们能够用自己的小工具复制这种虫子。在他们解决这个问题之前,通过http://google.com/ig?aig=0访问iGoogle应该可以解决这个问题。
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- Ajax Live搜索发布到Laravel视图
- backbone.js无法渲染视图
- 根据某些条件在视图之间切换
- ng视图外的链接重定向到ng视图内的页面
- 如何在Jquery中发布后将值从视图返回到控制器
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 使用Scala Play Framework视图中的键检索映射值
- FF视图源|脚本高亮显示为红色
- 如何使bxslider仅在移动视图中处于活动状态
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 在Rails中更新Div,而不更改更新请求后的视图
- 如何在Ionic Android中将Javascript注入到web视图中
- Google Gadget画布视图无法与Gadget对话.视图或.params,直到刷新