首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor:让layout.html WaitOn成为订阅?

Meteor:让layout.html WaitOn成为订阅?
EN

Stack Overflow用户
提问于 2014-07-17 17:28:06
回答 1查看 158关注 0票数 1

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

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

代码语言:javascript
复制
<main class="main container" id="central">
  {{> yield}}
  {{> chatlist}}
</main>

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

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

EN

回答 1

Stack Overflow用户

发布于 2014-07-17 17:40:03

使用一个区域:

代码语言:javascript
复制
<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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24799711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档