2013-08-22 67 views
1

我正在使用Kendo UI移動應用程序(當時只使用iOS),目前在應用程序中有3個視圖。 「主」視圖有一個ListView,另外兩個視圖是簡單的形式。Kendo UI移動刷新列表視圖顯示

列表視圖綁定到本地存儲中的數據,並具有獲取數據的方法。這一切似乎在應用程序加載時工作正常,並且我還可以執行「pull to refresh」並更新數據。

我無法弄清楚當視圖重新顯示時如何刷新列表。用戶可以轉到其他視圖之一,並執行某種操作來更新數據,以便當他們返回到列表視圖時,我希望數據自動刷新。

希望這有道理?我包括我的appInit下面的方法是什麼最初結合數據:

function appInit() { 
     $("#certificateList").kendoMobileListView({ 
      pullToRefresh: true, 
      dataSource: new kendo.data.DataSource({ 
       transport: { 
        read: function(options) { 
         var data = Redemptions.getCertificates(); 
         options.success(data); 
        }, 
        schema: { 
         model: { 
          id: 'id', 
          fields: { 
           id: { type: 'number' }, 
           value: { type: 'number', format: '{c2}' } 
          } 
         } 
        } 
       } 
      }), 
      //dataSource: kendo.data.DataSource.create({data: Redemptions.getCertificates() }), 
      template: $("#certificateTemplate").html() 
     }); 
    } 

事情我已經試過

  • 使用連接到data-after-show主視圖的方法
  • 我的「添加」代碼完成後調用$('#certificateList').data('kendoMobileListView').refresh();並導航回主視圖。

回答

4

原來我還需要在DataSource添加read()爲ListView。我得到的代碼是:

function refreshCertificates() { 
    var certificateList = $('#certificateList').data('kendoMobileListView'); 
    certificateList.dataSource.read(); // added line 
    certificateList.refresh(); 
} 

它會從一些被稱爲如:

if (cert.Status === 1) { // valid 
    app.navigate('#certificatesView', 'slide:right'); 
    refreshCertificates(); 
} 

我選擇不擁有它是在data-after-show屬性,因爲有些時候,我當執行操作視圖實際上並未刷新。

1

劍道移動視圖有一個事件,beforeShow。您應該可以爲此添加事件處理程序,並在顯示視圖之前執行所需的任何操作。

<div id="mainView" data-role="view" data-title="Main Page" data-before-show="mainViewLoad" data-layout="default"> 

function mainViewLoad() { 
    alert("Main View loaded"); 
} 

看到這裏jsbin http://jsbin.com/OBeZeZu/1/edit

劍道查看活動列表http://docs.kendoui.com/api/mobile/view#events

+0

我之前遇到過的問題是視圖中的列表似乎不是「可用」(不是正確的詞,但現在還不能認爲適當的術語)。它表示''var certificateList = $('#certificateList')data'('kendoMobileListView');' –

+0

'你不能創建ListView對象,在文檔就緒時,或者在應用程序init ?您可以嘗試後期作爲最後的手段,或可能的前顯示,但與setTimeout($(「#listView」)。data(「kendoListView」)。refresh(),200); –

+0

我創建了UL,然後在應用程序初始化時將ListView接線。儘管我沒有想到'setTimeout()',我想我會給出一個答案。謝謝! –