【问题标题】:Document does not display only on the first page文档不只显示在第一页
【发布时间】:2018-03-07 18:30:37
【问题描述】:

我遇到了这种奇怪的情况,我无法弄清楚问题出在哪里。集合有一个分页,在导航时可以正常工作。我在一个集合中有 5 个文档,每个文档在一个页面上显示每 2 个文件来显示分页。每个文档都有一个 url 链接,单击该链接会显示该文档的完整页面。

现在的挑战是,如果我单击第一页上的文档,它会显示完整的记录,但如果我导航到下一页并单击一个文档,它会显示一个空白页。我已经尝试了所有我能做的,但还没有得到什么是正确的。

这些较早的帖子是对当前帖子的基础:Publish and subscribe to a single object Meteor jsMeteor js custom pagination

这是帮手

singleSchool: function () {
  if (Meteor.userId()) {
     let myslug = FlowRouter.getParam('myslug');
       var subValues = Meteor.subscribe('SingleSchool', myslug );
       if (myslug ) {
       let Schools = SchoolDb.findOne({slug: myslug});
       if (Schools && subValues.ready()) {
          return Schools;
       }
    }
  }
},

这是火焰模板

<template name="view">
  {{#if currentUser}}
    {{#if Template.subscriptionsReady }}
      {{#with singleSchool}}
        {{singleSchool._id}}
        {{singleSchool.addschoolname}}
      {{/with}}
    {{/if}}
  {{/if}}
</template>

【问题讨论】:

  • 你能把console.log('GOt Slug');放在let myslug = FlowRouter.getParam('myslug');之后,让我们知道是否捡到了slug。
  • 谢谢。生病 。 BRB
  • 是的。确认的。它正在看到蛞蝓。打印在控制台上。
  • 还有你为什么要在助手内部订阅。由于您的slug 是动态的,正如@Jankapunkt 在上一个问题中所建议的那样,您必须定义一个 ReactiveVar/ReactiveDict 以获取您的订阅动态。为此,您可以在Template.view.onCreated(function{//autorun here}); 中使用this.autorun(()=&gt;{//subscribe here using reactive-var});

标签: javascript pagination meteor-blaze subscription


【解决方案1】:

试试这个;

onCreated 函数:

Template.view.onCreated(function(){
    this.dynamicSlug = new ReactiveVar("");
    this.autorun(()=>{
        // When `myslug` changes, subscription will change dynamically.
        this.dynamicSlug.set(FlowRouter.getParam('myslug'));
        Meteor.subcribe('SingleSchool', this.dynamicSlug.get());
    });
});

助手

Template.view.helpers({
    singleSchool(){
        if (Meteor.userId()) {
            let school = SchoolDb.findOne({slug: Template.instance().dynamicSlug.get()});
            if (school) {
              return school;
            }
        }
    }
});

【讨论】:

  • 我现在在实现这个之后得到了这个错误:Exception in defer callback: view.js/&lt;/&lt;@http://localhost:3000/app/app.js?hash=aa85b826ff10ef9142c8b8a7b8496905df96af6d:1087:9 viewAutorun/&lt;/&lt;@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1934:18 Template._withTemplateInstanceFunc@http://localhost:3000/packages/blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3744:
  • 自动运行调用是我可以破译它指向错误所在的行。
  • 好的!顺便说一句,您必须单击此链接&lt;@http://localhost:3000/app/app.js?hash=aa85b826ff‌​10ef9142c8b8a7b84969‌​05df96af6d:1087:9 它会显示错误行。
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 2016-12-25
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
相关资源
最近更新 更多