2013-08-22 3 views
1

Я работаю над мобильным приложением Kendo UI Mobile (используя только iOS в то время) и в настоящее время имеет 3 вида в приложении. «Основной» вид имеет ListView, а остальные 2 - простые формы.Kendo UI Mobile Refresh List View on View Show

Вид списка связан с данными, которые у меня есть в локальном хранилище, и есть способ получения данных. Кажется, что все работает нормально, когда приложение загружается, и я также могу сделать «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

Оказывается, я тоже нужно добавить read() на DataSource для 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

Kendo для мобильных устройств есть событие, 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

Проблема, с которой я столкнулся, заключается в том, что список в представлении не кажется «доступным» (не правильным словом, но не может считаться с правильным термином в данный момент). Он говорит, что метод 'refresh()' недоступен в 'var certificateList = $ ('# certificateList'). Data ('kendoMobileListView');' –

+0

Когда вы создаете объект ListView, готовый документ или инициализацию приложения ? Вы можете попробовать after-show в качестве последнего средства или возможно предварительное шоу, но с параметром setTimeout ($ ("# listView"). Data ("kendoListView"). Refresh(), 200); –

+0

У меня создан UL, а затем я подключаю ListView вверх к приложению init. Я не думал о 'setTimeout()', хотя, думаю, я дам этот снимок. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^