0

期待どおりに機能する「戻る」ボタンに加えて、いくつかの db テーブルを更新し、UI を更新する関数を非同期的に呼び出す必要があります。

この投稿を作成する前に、私はいくつかの調査を行い、これについて次のことを試しました...

<h1 data-dojo-type="dojox.mobile.Heading" id="hdgSettings" data-dojo-props="label:'Settings',back:'Done',moveTo:'svStart',fixed:'top'"></h1>

dojo.connect(dijit.registry.byId("hdgSettings"), "onclick",   
    function() {
        if (gblLoggerOn) WL.Logger.debug(">> hdgSettings(onclick) fired...");
        loadTopLvlStats();
}); 

私の見出しには「戻る」ボタン以外のウィジェットがないため、このイベントを見出しに添付すると問題が解決すると思いましたが、何もしませんでした。ということで、これに変更…

dojo.connect(dijit.registry.byId("hdgSettings")._body, "onclick",   
    function() {
        if (gblLoggerOn) WL.Logger.debug(">> hdgSettings(onclick) fired...");
        loadTopLvlStats();
}); 

結局のところ、「._body」属性は、たまたまアプリのメイン UI コンポーネントとして使用しているアコーディオン ウィジェットで共有する必要があり、アコーディオンと対話しようとすると、アプリ全体が役に立たなくなりました。

最後の手段として、組み込みの「戻る」ボタンを使わずに、独自の tabBarButton を見出しに配置して、アプリの遷移とイベント処理を制御することができると思います。

コミュニティが独自の tabBarButton を使用することを提案している場合は、それで構いませんが、組み込みの「戻る」ボタン サポートにイベントをきれいにアタッチする方法が必要です。

考え?

4

1 に答える 1

1

次のようにしてください。

var backButton = dijit.registry.byId("hdgSettings").backButton;
if (backButton) {
  dojo.connect(backButton, "onClick", function() { ... });
}

備考:

  • 上記のコードは、いっぱいになる前に dijit のウィジェット レジストリを使用しないように、dojo/ready 呼び出しを介して実行する必要があります。http://dojotoolkit.org/reference-guide/1.9/dojo/ready.htmlを参照してください。
  • イベント名の大文字化に注意してください: "onClick" ("onclick" ではありません)。
  • あなたが使用している Dojo のバージョンがわからないので (質問するときは常に Dojo のバージョン情報を含めてください)、最近の Dojo バージョン (1.8、1.9) では推奨されていない AMD より前の構文を使用しました。詳細については、 http://dojotoolkit.org/documentation/tutorials/1.9/modern_dojo/を参照してください。
于 2013-08-08T15:15:49.243 に答える