jquery mobile - Meteor 0.8升级影响jQueryMobile ListView刷新



我刚刚升级到Meteor 0.8,并注意到我的listview刷新不再工作,这意味着我看到的数据,但jQuery-Mobile风格没有被应用。我使用的是1.4.2,这与0.7.2的Meteor使用:

   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>

问题似乎是模板渲染事件真的还没有渲染数据,所以它试图做一个列表视图刷新的东西还没有。现在,我做了这个hack,但这并不是我想保留的东西:

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
};

根据对这个问题的评论和最终的这个链接,这是我的解决方案。基本上,您只需要在HTML中将列表项作为单独的模板分开,然后添加一个JS Template.template_name.rendered函数来刷新列表视图。它确实在每次有新条目时被调用,但只需要大约3ms来刷新条目。

最新更新