2011-08-04 4 views
0

私は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ビューに切り替えると、ガジェットはgetcanvasビューから)の設定にできません。

prefs = new gadgets.Prefs() 
prefs.get('paramname') 

あなただけが全体canvasビューページの更新を行う一度ガジェットは、これらの好ましい選択肢を取得します。

これを取得します:homecanvasビューの間のパラメータとしてこれらの設定を渡してみました。

(home view) 
params = 
    'paramname': '55|34|101' 
gadgets.views.requestNavigateTo('canvas', params) 

(canvas view) 
@params = gadgets.views.getParams() 

これが成功しcanvasに私たちを送信しますが、canvashomeを切り替えてgadgets.views.getParams()に話をしようとした後、空のオブジェクトが返されます。一度リフレッシュが行われると、ガジェットは同じ呼び出しを処理し、パラメータを見つけて使用します。我々はページを更新しない限り、空のオブジェクトを返すコード実行の最後のピースがあり、両方のビューで

、...私たちの init()関数を呼び出す

gadgets.util.registerOnLoadHandler init 

...

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

...。

これはなぜ起こっているのですか? gadgets.*のものを「キックスタート」していませんか?これは、ページを更新してからキャンバスビューにバインドするまで、特定のガジェットに「バインド」されていないgadgets.*オブジェクトとほぼ同じです。助けてください!

答えて

0

これは、Googleの新しいAJAX読み込み技術で、home/canvasの表示に切り替える際に使用される問題です。私たちはGoogleのiGoogle/OpenSocialチームに連絡し、それが私たちの反応です。彼らは自分のガジェットでバグを再現することができました。彼らがそれを修正するまで、http://google.com/ig?aig=0でiGoogleにアクセスすると、問題を悩ますはずです。

関連する問題