我刚刚升级到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
};
答案 0 :(得分:0)
这是我的解决方案,基于对问题的评论,最终是link。基本上,您只需将列表项作为HTML中的单独模板分离,然后添加将刷新列表视图的JS Template.template_name.rendered
函数。每次有新项目时都会调用它,但只需要大约3ms来刷新项目。