【问题标题】:Meteor full page refresh on load more button ( iron-router )Meteor 加载更多按钮时刷新整页( Iron-router )
【发布时间】:2014-07-17 00:52:00
【问题描述】:

我的 Meteor 应用似乎在一条新路线上令人耳目一新,我在关注 Discover Meteor 时添加了 iron-router-progress。

这是网址 - http://thusstyles.meteor.com/

Github 网址 - github.com/ThusStyles/diccoverMeteor

发现 Meteor 网址 - http://meteor-book-chapter12-5.meteor.com/

点击加载更多按钮时,我的似乎跳到顶部。

【问题讨论】:

  • 请提供代码示例。听起来您需要在该链接上执行 preventDefault 或其他操作
  • 我也一样
  • 页面跳转在cmetshere中讲。显然这是一个已知问题,但汤姆不确定原因。您的应用似乎没有进行刷新 - 至少在我的浏览器中没有。
  • 那么我应该使用0.7.0版本的iron-router吗?
  • 已修复 - 使用 0.7.0 版本的 Iron-router

标签: javascript jquery pagination meteor iron-router


【解决方案1】:

这是因为您使用 waitOn 而不是 subscriptions。 waitOn 会尝试渲染加载模板,而订阅仍会订阅但不会触发加载模板,因此不会导致闪烁。

但是,这也会在订阅准备好之前呈现页面。因此,您需要跟踪订阅的就绪状态。请参阅 Discover Meteor 的示例。请注意,数据正在返回 this.postsSub.ready,这是在订阅下设置的。

PostsListController = RouteController.extend({
template: 'postsList',
increment: 5,
postsLimit: function() {
return parseInt(this.params.postsLimit) || this.increment;
},
findOptions: function() {
return {sort: {submitted: -1}, limit: this.postsLimit()};
},
subscriptions: function() {
this.postsSub = Meteor.subscribe('posts', this.findOptions());
},
posts: function() {
return Posts.find({}, this.findOptions());
},
data: function() {
var hasMore = this.posts().count() === this.postsLimit();
var nextPath = this.route.path({postsLimit: this.postsLimit() + this.increm
ent});
return {
posts: this.posts(),
ready: this.postsSub.ready,
nextPath: hasMore ? nextPath : null
};
}
});

查看 GitHub 上的完整示例: https://github.com/DiscoverMeteor/Microscope/commit/chapter12-5

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 2014-09-20
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2014-05-07
    • 2013-11-21
    相关资源
    最近更新 更多