2

I would like to get the id of the last view in KendoUI. I already inspected the event object but found nothing that reveals this.

This could be the view that I came from with a tap or the view that I came from with the back button.

4

3 に答える 3

2

これはどうですか:

var id = $('[data-role=view]:last').attr('id');
于 2013-02-15T19:36:50.490 に答える
1

上記の回答を少し改善するために、アプリケーション オブジェクトの初期化時に直接アプリのペイン オブジェクトにイベントをアタッチできます。そのため、アプリの init が少し早く起動するため、タイムアウトは必要ありません。

var previous_view = '';
function store_previous_view(e)
{
    try
    {
        previous_view = e.sender.view().id;
    }
    catch(e){}
}
app = new kendo.mobile.Application({navigate: store_previous_view});

イベントがすぐに発生し、view() が最初に null を返すため、try-catch が存在します。そのため、previous_view を使用する前に値が正常かどうかを確認する必要があります。

これは Kendo UI コア 2014.3.1119 で動作します。それが抜け穴なのか意図した動作なのかはわかりませんが、文書化されていません。

于 2015-07-27T22:36:03.283 に答える
1

この回答は Kendo UI モバイル アプリケーション用ですが、基本的なプリンシパルは Kendo UI デスクトップのソリューションの基礎としても使用できます。

以前のビューを取得するためにビューの show イベント ハンドラーを使用e.view.nextViewIDしていましたが、これは kendo ui バージョン 2014.1.528 で機能しなくなりました。そのため、 pane.navigateイベントを使用して以前のビューをグローバル変数に格納する次の回避策を見つけました。

var previousView = '';
var app = new kendo.mobile.Application();
app.pane.bind("navigate",
    function(e) {
        previousView = e.sender.view().id;
    }
);

また、最初は app.pane が未定義になる可能性があることもわかったので、上記の app.pane.bind への呼び出しをsetTimeoutで 50 ミリ秒の遅延でラップしました。

于 2014-06-18T05:33:06.233 に答える