Просмотр холста гаджета Google не может общаться с gadgets.views или .params до обновления? - PullRequest
0 голосов
/ 05 августа 2011

Я работаю над гаджетом, который будет работать в iGoogle.На самом деле, он закончен, за исключением неприятной ошибки, из-за которой у нас возникает кошмарное время на поиски времени.

Обратите внимание, что фрагменты кода написаны на CoffeeScript;он скомпилирован в JS, прежде чем мы разместим его для Google.Мы также используем Backbone.js для нашего кода, но это не должно иметь большого значения, так как весь наш специфичный для Backbone код (initialize методы и т. Д.) Работает просто отлично;Мне удалось выделить проблемные части кода за пределами нашего Backbone-компонента .

. Гаджет сохраняет список предпочтительных параметров для объекта gadgets.prefs Google в виде строки с разделителем канала (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 view.

(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.* объектом, который не «привязан» к моему конкретному гаджету, пока я не обновлю страницу (что затем заставит его привязаться к представлению Canvas).Пожалуйста, помогите!

1 Ответ

0 голосов
/ 12 августа 2011

Кажется, это проблема новой технологии загрузки AJAX от Google, используемой для переключения между home / canvas представлениямиМы связались с командой Google iGoogle / OpenSocial, и вот ответ, который мы получили.Они смогли воспроизвести ошибку с помощью собственного гаджета.Пока они не исправят это, доступ к iGoogle с http://google.com/ig?aig=0 должен устранить проблему.

...