2015-12-01 46 views
0

當我將新數據加載到kendo.data.DataSource中時,如何讓我的列表視圖頁面刷新?如何使用Kendo數據源中的新數據來刷新列表視圖

我正在使用Telerik AppBuilder的混合移動應用程序。 我有一個簡單的listview綁定到數據源。 我使用ajax POST請求來加載一些JSON, 然後將其放置在數據源中。 我有兩頁,家庭和列表視圖。 房屋有一些錨點,導致單個列表視圖頁面 但具有不同的數據ID值以產生不同的列表。

第一次我列表視圖頁面加載正確。 之後,當我重新加載數據源時,列表視圖不刷新; 的第一個列表的內容始終顯示無論什麼數據ID值我送

這裏是源:

的JavaScript

window.APP = 
{ 
    blamListSource: null, 

    home: 
    { 
     fetchBlam: function(event) 
     { 
     var argumentData = event.button.data(); 
     var requestBody = 
     { 
      "requestVersionId": "1", 
      "blamId": argumentData.id.toString() 
     }; 

     $.ajax(
      { 
      url: getBlamURI, 
      type: "POST", 
      data: JSON.stringify(requestBody), 
      dataType: "json", 
      contentType: 'application/json', 

      success: function(requestData, textStatus, jqxhr) 
      { 
       APP.blamListSource = new kendo.data.DataSource(
       { 
        data: requestData.userList, 
       }); 

       APP.blamListSource.read(); 

       app.navigate("views/blamlist.html"); 
      }, 

      error: function(jqxhr, textStatus, error) 
      { 
       alert("Error"); 
      }, 
      }); 
     } 
    } 
}; 

home.html的

<div data-role="view" data-title="Home" data-layout="main" 
    data-model="APP.models.home" data-zoom="true"> 
    <div id="form-blam" data-role="content"> 
    <a id="commercial" data-role="button" 
     data-bind="click: fetchBlam" data-id="27">Something</a> 
    <a id="personal" data-role="button" 
     data-bind="click: fetchBlam" data-id="39">Something Else</a> 
    </div> 
</div> 

views/blamlist .html

<div data-role="view" data-title="Blam List" data-layout="main" 
    data-model="APP" data-zoom="true"> 
    <div data-role="navbar"> 
    <a class="nav-button" data-align="left" data-role="backbutton">Back</a> 
    </div> 
    <ul id="blam-listview" data-style="inset" data-role="listview" 
     data-template="blamListTemplate" data-bind="source: blamListSource"> 
    </ul> 
    <p id="no-contactlist-span" hidden="hidden" class="no-items-msg"> 
    <b>No blam.</b> 
    </p> 
</div> 

<!-- Blam ListView Template --> 
<script type="text/x-kendo-template" id="blamListTemplate"> 
    <div> 
    <div> 
     <img id="blamPhoto" src="#: data.photoUri #"/> 
    </div> 
    <div> 
     <div id="name">#: data.name #</div> 
     <div>#: data.title #</div> 
     <div> 
     <div> 
      <a data-role="button" class="callimg" 
      data-phone="#: data.phone #" href="tel:#: data.phone #" 
      data-rel="external"></a> 
     </div> 
     <div> 
      <a data-role="button" class="emailimg" 
      href="mailto:#: data.email #" 
      data-rel="external"></a> 
     </div> 
     </div> 
    </div> 
    </div> 
</script> 

回答

0

看起來相當簡單。

將data-reload =「true」添加到視圖中。

老 - 不刷新

<div data-role="view" data-title="Blam List" data-layout="main" 
data-model="APP" data-zoom="true"> 

新 - 刷新

<div data-role="view" data-title="Blam List" data-layout="main" 
data-model="APP" data-zoom="true" data-reload="true"> 

編輯我不小心把 「數據刷新」,這是錯誤的。正確的值(編輯爲正確)是「數據重新加載」。