【问题标题】:Meteor: make layout.html WaitOn a subscription?Meteor:让 layout.html WaitOn 订阅?
【发布时间】:2023-03-12 17:24:01
【问题描述】:

我正在尝试制作一个固定在页面底部的聊天 (Template.chatlist) 功能(类似于 Facebook 上的聊天功能,其中聊天框是持久的,而后台页面会随着用户而变化浏览到网站的其他部分)。所以我把聊天框放在布局页面上的把手模板中(所以它不是从 {{>yield}} 模板呈现的)。问题是,它在加载之前没有等待订阅(没有到 layout.html 的路由,所以我无法在路由器中设置 waitOn ),所以它无法从我的用户集合中提取信息.

我需要知道,如何让 layout.html 页面在订阅正确完成后等待加载?当然,我可以将聊天模板放在每个页面的 yield 模板中,让它正常等待,但有没有办法我不必这样做?

<main class="main container" id="central">
  {{> yield}}
  {{> chatlist}}
</main>

这就是 layout.html 现在的样子。聊天列表模板不等待任何数据订阅,因为它不在 yield 部分(因此不受路由器控制)

我也做了Template.chatlist.helpers 并将用户数据注册到帮助程序中,但由于某种原因,当我通过控制台记录Users.count 对其进行测试时,控制台返回零。

【问题讨论】:

    标签: meteor handlebars.js iron-router


    【解决方案1】:

    使用区域:

    <template name="layout">
      <aside>
        {{> yield region='aside'}}
      </aside>
    
      <div>
        {{> yield}}
      </div>
    
      <footer>
        {{> yield region='footer'}}
      </footer>
    </template>
    
    Router.map(function () {
      this.route('home', {
        path: '/',
        template: 'myHomeTemplate',
        layoutTemplate: 'layout',
        yieldTemplates: {
          'myAsideTemplate': {to: 'aside'},
          'myFooter': {to: 'footer'}
        },
        waitOn: function() {
          // ...
        }
      });
    });
    

    请参阅Iron Router docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-07
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 2015-04-21
      相关资源
      最近更新 更多