【问题标题】:Meteor "load more" button with Iron Router & no "Posts Limit" in the url带有 Iron Router 的 Meteor “加载更多”按钮,网址中没有“帖子限制”
【发布时间】:2014-09-20 08:14:28
【问题描述】:

所以我正在使用 Iron-Router 构建一个多页 Meteor 应用程序。在一个页面(不是主页)上,我有一个从集合中显示的项目列表,其中 Iron-Router“等待”来自集合的数据,其限制取决于 Session 变量。

当按下加载更多按钮时,会话变量会发生变化,并且页面会重新加载更多项目。

我想要做的就是在旧的加载更多按钮的位置重新加载页面(新按钮放在新列表的末尾),或者以某种方式使这个过渡更清晰。请参阅http://microscope.meteor.com/ 以获得完美的示例。

HTML:

 <template name="postsList">
    {{#each postsWithRank}}
      {{> postItem}}
    {{/each}}

  {{#if moreResults}}
    {{> loadMore}}
  {{/if}}
 </template>


<template name="loadMore">
 <a class="load-more">Load more</a>
</template>

帮手:

Template.postsList.helpers({ 
 postsWithRank: function() {
   Posts.find({category: this.title}).rewind();
   return Posts.find({category: this.title}).map(function(post, index, cursor) {
     post._rank = index;
     return post;
   });
 },
 moreResults: function() {
  return parseInt(Session.get('limit')) == Posts.find().fetch().length;
 }
});


Template.loadMore.events({
"click": function(event) {  
event.preventDefault();
 Session.set("limit", Session.get("limit") + 10);
 }   
})

路由器:

  listingPageController = RouteController.extend({
  template: 'listingPage',
  sort: {submitted: -1, _id: -1},
 limit: function() {return Session.get('limit')},
 findOptions: function() {
  return {sort: this.sort, title: this.params.title, limit: this.limit()}; 
 },
  waitOn: function() {
  return Meteor.subscribe("posts", this.findOptions());
  },
 data: function() {
  return Listings.findOne({title: this.params.title})
 }
});

谢谢!

所以我没有用于 postsList 模板的路由器代码。 postsList 模板在 listingPage 模板中呈现,如下所示:

<template name="listingPage">

  <!--main-->
  <div class="container">
   <div class="row">

    {{>leftBarListingPage}}

    <!--right-->
    <div class="col-md-9">
    <h2 id="sec1"> 
    <div class="listingPageHeader">
     <div style= "text-transform:capitalize"> Posts in</div> 
     <div class="smallListings">&nbsp;</div>
     {{title}} </div> 
   </h2>


  <p>
     <div class="posts">
     {{> postsList}}
    </div>
  </p>


</div><!--/right-->

{{title}} 属性来自 listingPageController,它与两个 Collections 一起使用 -> 一个 Listings 集合(用于静态父类别)和一个 Posts 集合(用于这些类别中的帖子)

【问题讨论】:

    标签: javascript meteor real-time reload iron-router


    【解决方案1】:

    有什么问题?你只说了你想做的事,没有遇到任何错误/问题。

    如果页面移回顶部,那是因为最新版本的 Iron 路由器存在错误,请编辑您的 smart.json 并更改/插入该行

    "iron-router": {
      "version": "0.7.0"
    }
    

    然后测试并查看它是否有效,您也可能希望在之前的操作中运行 Session.setDefault("limit", 10) ,否则您将不会总是拥有该会话。

    【讨论】:

    • 铁路由​​器很好用。但是,我不认为它对我有用。我想我的问题是整个页面都在重新渲染,而不是仅仅在底部加载更多帖子,这将页面的焦点带到了顶部。你能帮忙吗?
    • 或许可以尝试升级到最新的 Iron 路由器 0.8.0
    • 还是什么都没有。铁路由器的错误到底是什么?会不会是别的?
    • 不确定,能否发布您的postsList 模板的路由器代码?
    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2018-03-26
    • 2015-10-12
    • 2014-10-23
    • 2015-08-31
    相关资源
    最近更新 更多