2014-03-28 29 views
1

我剛剛升級到Meteor 0.8,並注意到我的listview刷新不再有效,這意味着我看到數據但jQuery-Mobile樣式沒有被應用。我使用的是1.4.2,這使用能正常工作與流星的0.7.2:流星0.8升級影響jQueryMobile ListView刷新

Template.requests.rendered = function(){ 
     if ($('[data-role="listview"]')) { 
      $('[data-role="listview"]').listview().listview("refresh"); 
     } 
    } 

有其他人看到這種行爲和修復知道?

這是我的模板是什麼樣子:

<template name="requests"> 
    <div id="listview-content"> 
     <ul data-role="listview" data-autodividers="false" data-filter="true" data-inset="true"> 
      {{#each items}} 
      <li><a href="#listdetail" data-name="{{RequestedFor}}" data-transition="slide">{{RequestedFor}}<br><span 
        class="small">Requested new {{RequestedItem}} on {{formatDate dateSubmitted "short"}}</span></a> 
      </li> 
      {{/each}} 
     </ul> 
    </div> 
</template> 

的問題似乎是,模板渲染事件確實尚未呈現的數據,因此它試圖做的東西,現在尚未列表視圖刷新。現在,我這樣做黑客,但是這不是我想保持課程:

Template.requests.rendered = function(){ 
    Meteor.setTimeout(function() { 
     if ($('[data-role="listview"]')) { 
      $('[data-role="listview"]').listview().listview("refresh"); 
     } 
    }, 300); //Must be >= 300ms to render the listview properly 
}; 
+1

如果您添加新的'ul',則僅使用'.listview()'。如果您將'li'添加到現有的'ul',則只能使用'.listview(「refresh」)'。 – Omar

+0

我已經嘗試了這兩種方法,但這不起作用,因爲列表視圖尚不可見。我需要一種方式來做到這一點後,列表視圖是可見的,然後我期望它的工作。問題是我似乎無法找到一種方法來做到這一點與流星。 – occasl

+0

有沒有錯誤? – Kshitiz

回答

0

這裏的基礎上,評論的問題,最終這個link我的解決方案。基本上,您只需要將列表項作爲HTML中的單獨模板分開,然後添加將刷新列表視圖的JS Template.template_name.rendered函數。每次有新物品時它都會被調用,但只需要約3ms來刷新該物品。