2013-02-15 60 views
2

我想獲得KendoUI中最後一個視圖的ID。我已經檢查了event對象,但沒有發現任何可以揭示這一點的東西。KendoUI:獲取最後一個視圖的名稱

這可能是我來自一個水龍頭或我來自後退按鈕的視圖。

回答

2

這個怎麼樣:

var id = $('[data-role=view]:last').attr('id'); 
+1

這不是我想做的。這是讓我的文件中的最後一個視圖的ID,而不是最後顯示的視圖的ID。 – Andrew 2013-02-15 19:47:49

1

這個答案是劍道UI移動應用,但基本原理可以作爲對於劍道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延遲50ms - 如果有官方的方式知道什麼時候app.pane被設置,請分享。

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}); 

try-catch存在,因爲事件將立即觸發,並且view()將在第一次返回null。因此,在使用之前,應該先檢查previous_view的值是否合理。

這適用於Kendo UI核心2014.3.1119。我不知道這是漏洞還是有意的行爲,但絕對沒有記錄。