Meteor 0.8升级会影响jQueryMobile ListView刷新

时间:2014-03-28 20:34:00

标签: jquery-mobile meteor

我刚刚升级到Meteor 0.8,并注意到我的listview刷新不再有效,这意味着我看到数据但是jQuery-Mobile样式没有被应用。我使用的是1.4.2,这对于流星的0.7.2使用得很好:

   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 个答案:

答案 0 :(得分:0)

这是我的解决方案,基于对问题的评论,最终是link。基本上,您只需将列表项作为HTML中的单独模板分离,然后添加将刷新列表视图的JS Template.template_name.rendered函数。每次有新项目时都会调用它,但只需要大约3ms来刷新项目。