0

ビューで、HTML ビュー フラグメントを AJAX 経由で DOM にプルし、そのビューに遷移する DojoX Mobile ListItem があるとします。これがすべて正常に機能していると仮定します。

ここで、その ListItem が含まれていた最初のビューに戻り、DOM からそのビュー ノードを破棄する別のボタンをクリックします。以前にそのビュー ノードを DOM (現在は削除されています) にロードした ListItem をクリックすると、存在しないビューに遷移しようとします。削除されたことを知りません。

以前にフェッチされたものがもう存在しないため、HTML を再度フェッチする必要があることを ListItem に伝える方法はありますか? どこのドキュメントでも、これを行うことについて何も見ていません。ここでコード サンプルが本当に必要だとは思いませんが、必要に応じて最小限のものを提供できます。

4

2 に答える 2

0

さて、この場合、ListItemコンテナのonShow関数(または他のonchangeイベント)をフックできると思います。アイテムをリロードする必要があるかどうかを評価するために、上記のハンドルのリスナーを作成します。以下は、これらの情報を含むアイテムのラベルではなく、item.onclickのコンテンツが表示されていることを前提としています。

または、初期化中にこれらすべてを実行して、ListItemコンテナーがカスタムonClickコードで拡張されるようにします。

単純に見えますが、プログラムでこのアイテムに変更する場合、どこで、いつ、またはいくつかの癖が生じる可能性がありますが、ここでは次のようになります。

function checkItem() {
    // figure out if DOM is present and if it should be
    if( isLoggedIn() ) {
       this.getChildren().forEach(function(listitem) {
        if( dojo.query("#ID_TO_LOOK_FOR", listitem.domNode).length == 0 ) {
           // this references the listItem, refresh contents.
           // Note: this expects the listitem to be stateful, have no testing environment at time being but it should be
           listitem.set("url", listitem.url);
        }


       });
    }
}

できれば、これをあなたのコンテナの構成に設定してListItemください

var listItemParent = new dojox.mobile.RoundRectList({
  onShow : checkItem,
  ...
});

またはリスナーを作成します

var listItemParent = dijit.byId('itemRegistryId');
// override onClick - calling inheritance chain once done
dojo.connect(listItemParent, "onClick", listItemParent, checkItem);
于 2012-06-01T14:20:13.960 に答える
0

別のルートに移動して、ビューをDOMに残し、すべての機密データをビューからクリアする関数を作成しました。

于 2012-06-01T13:20:13.660 に答える