私はiGoogleで動作するガジェットに取り組んでいます。実際には、終了しました。厄介なバグとは別に、私たちは悪夢を抱いています。Googleガジェットのキャンバスビューはリフレッシュするまでgadgets.viewsや.paramsと対話できません。
コードスニペットはCoffeeScriptにあります。私たちがGoogleのためにホストする前にJSにコンパイルされています。また、Backbone.jsをコードに使用していますが、バックボーン固有のコード(initialize
のメソッドなど)がうまく機能するので、大きな違いはありません。私はバックボーンのものの外にあるコードの問題部分を隔離することができました。
ガジェットは、Googleのgadgets.prefs
オブジェクトに優先オプションのリストをパイプ区切り文字列(55|34|101
)として保存します。これは、保存
prefs = new gadgets.Prefs()
prefs.set('paramname','55|34|101')
がうまく起こり、そして作品がうまく県get
への後続の呼び出しのいずれか。彼らは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
に私たちを送信しますが、canvas
へhome
を切り替えてgadgets.views.getParams()
に話をしようとした後、空のオブジェクトが返されます。一度リフレッシュが行われると、ガジェットは同じ呼び出しを処理し、パラメータを見つけて使用します。我々はページを更新しない限り、空のオブジェクトを返すコード実行の最後のピースがあり、両方のビューで
init()
関数を呼び出す
gadgets.util.registerOnLoadHandler init
...
init = ->
@params = gadgets.views.getParams()
...。
これはなぜ起こっているのですか? gadgets.*
のものを「キックスタート」していませんか?これは、ページを更新してからキャンバスビューにバインドするまで、特定のガジェットに「バインド」されていないgadgets.*
オブジェクトとほぼ同じです。助けてください!