0

私は単一ページの JQM アプリケーションを持っています - すべての JQM "ページ" は 1 つのドキュメントにあります:

    <div>
        @RenderPage("Views/login.cshtml")
        @RenderPage("Views/page1.cshtml")
        @RenderPage("Views/page2.cshtml")
    </div>

デフォルトでJQMページの表示を無効にするにはどうすればよいですか?現在はlogin.cshtmlになっています。ユーザーがログインした後、手動で遷移メソッドを呼び出して履歴からログインページを消去できますか? Eq これは、最初のドキュメントの読み込み時に手動で呼び出したいものです:

$.mobile.changePage('#login-page', { reverse: false, changeHash: true });

または、「reverse」属性をchangePage呼び出しなしで false に設定することは可能ですか?

4

1 に答える 1

1

必要に応じて、クライアント側のソリューションを提供できます。

基本的に、私の古い例を使用します: http://jsfiddle.net/Gajotres/3PhKZ/いくつかの条件が満たされない場合にページ遷移を防止します。その時点で、changePage 関数を使用して、そのユーザーを他のページに転送できます。

このソリューションは、すべてのページ遷移中にトリガーされ、次のページがあなたの場合のログインページにある場合、条件を見て、必要なことを行うため、どのような場合でも機能します. その遷移を許可するか、完全に防止するか、単に別のページにリダイレクトすることができます。

$(document).on('pagebeforechange', function(e, data){  
    var to = data.toPage,
        from = data.options.fromPage;

    if (typeof to  === 'string') {
        var u = $.mobile.path.parseUrl(to);
        to = u.hash || '#' + u.pathname.substring(1);
        if (from) from = '#' + from.attr('id');

        if (from === '#index' && to === '#second') {
            alert('Can not transition from #index to #second!');
            e.preventDefault();
            e.stopPropagation();

            // remove active status on a button, if transition was triggered with a button
            $.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus ui-btn');;
        }  
    }
});
于 2013-05-22T10:32:40.630 に答える