0

私のアプリケーションでは、移行中に中間の空白ページが表示されます。そして、そのページに ajax スピナーが表示されます。

これは、私のmain.jsにスピナーを含めた方法です

$(document).ajaxSend(function() {
    $.mobile.loading( 'show');
});
$(document).ajaxComplete(function() {
    $.mobile.loading( 'hide');
});

そして、ルーターで、oldview.remove() と oldview.unbind() によって、古いビューを削除し、新しいビューをロードして、ゾンビ ビューの問題を取り除きます。

私の質問は、空のページに表示するのではなく、古いビューの上に ajax スピナーを表示するにはどうすればよいかということです。

どんな助けでも大歓迎です。

4

1 に答える 1

0

アップデート

すみません、ちょっと話が逸れました。DOM要素の上にある読み込みオーバーレイを表示/非表示にするために、jQueryプラグインがすでにあると想定していました..

したがって、私のソリューションを導入するには、必要です。

:私が読んだ限り$.mobile.loading()、特定のDOM要素に適用することはできません。

たとえば、jquery-loadmaskのようなものを使用して、それに合わせて CSS のスタイルを変更できます$.mobile.loading

または、個人的には、github にあるこの単純な jQuery 関数を使用して、同じ動作を実現します (より軽いかもしれません)。

オリジナル

やってみました:

oldview.$el.loading('show');

またajaxSendグローバルな Ajax イベントであり、さらに、どの DOM 要素にも関連付けられておらず、要素のみに関連付けられているため、View でdocument.bodyを処理する以外に選択肢はありません。show/hide

var OldView = Backbone.View.extend({

    //...

    events: {
        "click .the-button-trigering-the-ajax-call": "onButtonClicked"
    },

    onButtonClicked: function (e) {
        this.$el.loading('show');
    },

    // And you could get rid of it when rendering
    render: function () {

        this.$el.loading('hide');

        //...

        return this;
    }
});

たった1つの解決策。

于 2013-11-12T12:13:05.060 に答える