2013-03-20 5 views
1

У меня проблема с обновлением вниз. Он работает в первый раз, но затем, если я перехожу к другому виду, вернусь к исходному виду, текст Pull to refresh и Release to refresh, похоже, дублируется и перекрывается сам по себе. Я «жестко кодирую» данные источника данных здесь, я не хочу использовать транспортный ajax.Потяните вниз, чтобы обновить в Kendo-UI, перекрытия текста, показывающие метки «освобождения» и «выталкивания»

Я пытаюсь вручную обновить данные в методе setOptionspull, вместо того, чтобы позволить Kendo обновить его с помощью ajax. Фактическое обновление данных работает. Нет ошибок Javascript, и я получаю тот же результат в Chrome и Firefox.

Первый раз работы:

enter image description here

После переезда в другой точке зрения, а затем обратно к этой точке зрения, а затем потянув вниз:

enter image description here

мой взгляд код:

<div id="subitem-view" data-role="view" data-show="showSubItems"> 
    <div data-role="header"> 
     <div data-role="navbar"> 

     </div> 
    </div> 
    <ul id="subItemList" class="itemList"> 
    </ul> 
    <script id="subItemTemplate" type="text/x-kendo-template"> 
     #:Name# 
    </script> 
</div> 

Javascript :

function showSubItems(e) { 

    var subItems = new kendo.data.DataSource({ 
     data: [ 
      { Name : "Test1" }, 
      { Name : "Test2" } 
     ] 
    }); 

    e.view.element.find("#subItemList").kendoMobileListView({ 
     dataSource: subItems, 
     pullToRefresh: true, 
     template: kendo.template($("#subItemTemplate").html()) 
    }); 

    if (typeof (e.view.scroller.pull) == "undefined") { 
     e.view.scroller.setOptions({ 
      pull: function() { 
       console.log("pull event..."); 

       subItems.data([ 
        { Name : "Test1 Updated" }, 
        { Name : "Test2 Updated" } 
       ]); 

       setTimeout(function() { e.view.scroller.pullHandled(); }, 400); 
      } 
     }); 
    } 
} 

ответ

2

Вы инициализируете свой Кендо UI Mobile ListView на каждом шоу View, что приводит к непредсказуемым результатам, как воссоздавать тянуть, чтобы обновить ярлыки. Вы должны сделать это только в событии Init.

+0

Это решило это спасибо! Это перешло мне в голову, но, используя событие show, и вы используете транспортный ajax вместо жесткого кодирования данных, нет проблем с вытаскиванием, странно! – ServerBloke

+0

Проблема в том, что все виджеты на init добавляют элементы и события для поддержки различных функций. Поэтому либо вам нужно заранее уничтожить виджет (который не удаляет HTML, а только убивает его объект и события, поэтому вам также нужно очистить HTML) или не инициализировать его каждый раз (что также улучшит производительность) , – Bundyo