Я работаю над гаджетом, который будет работать в 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).Пожалуйста, помогите!