0

iGoogle で動作するガジェットの開発に取り組んでいます。実際、私たちが追い詰める時間の悪夢を見ているという厄介なバグは別として、それは終了しました.

コード スニペットは CoffeeScript であることに注意してください。Google にホストする前に JS にコンパイルされます。コードには Backbone.js も使用していますが、Backbone 固有のコード (initializeメソッドなど) はすべて問題なく動作するため、大きな違いはありません。バックボーン以外のコードの問題部分を切り分けることができました

ガジェットは、優先オプションのリストをgadgets.prefsパイプ区切りの文字列 ( 55|34|101) として Google のオブジェクトに保存します。

prefs = new gadgets.Prefs()
prefs.set('paramname','55|34|101')

この保存は正常に行われ、その設定への後続の呼び出しは正常にget機能します。prefs.getビューでの呼び出しによっても読み取ることがhomeできます。ガジェットが(ビューから)これらの設定に対応できないのは、homeビューからビューに切り替えるときです。canvasgetcanvas

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が、 に切り替えhomecanvas通信しようとするとgadgets.views.getParams()、空のオブジェクトが返されます。Refresh が完了すると、ガジェットは同じ呼び出しを処理し、params を見つけて使用します。

どちらのビューでも、最後に実行されるコードは…</p>

gadgets.util.registerOnLoadHandler init

私たちの関数を呼び出すinit()...</p>

init = ->
    @params = gadgets.views.getParams()

…ページを更新しない限り、空のオブジェクトを返します。

なぜこれが起こっているのですか?私はgadgets.*物事を適切に「キックスタート」していませんか?gadgets.*ページを更新するまで、特定のガジェットに「バインド」されていないオブジェクトと話しているようなものです(その後、強制的にキャンバス ビューにバインドされます)。助けてください!

4

1 に答える 1

0

home/canvasビューの切り替えに使用される Google の新しい AJAX ローディング テクノロジーに問題があるようです。Google の iGoogle/OpenSocial チームに問い合わせたところ、そのような回答が得られました。彼らは、独自のガジェットでバグを再現することができました。問題が修正されるまでは、 http: //google.com/ig ?aig =0 で iGoogle にアクセスすると、問題の応急処置になります。

于 2011-08-12T14:46:52.390 に答える