如何使用流星火焰渲染路线相关的子标题?

时间:2015-07-08 10:42:52

标签: javascript mongodb meteor routes meteor-blaze

我将要讨论的所有内容的最终结果是副标题不会像我想要的那样在屏幕上呈现。

目前有一个mongo集合子标题,其中包含category字段和texth字段。

Subheader = new Mongo.Collection('subheader');

Meteor.methods({
  subheaderInsert: function(subheaderIdAttributes) {
  check(String);
  check(subheaderIdAttributes, {
    texth: String,
    category: String
  });
  var subheaderId = _.extend(postAttributes, {
    submitted: new Date()
  });
  var subheaderId = SubheaderId.insert(subheader);
    return {
    _id: subheaderId
  };
}
});

有一条路线订阅了子标题和其他页面数据。

Router.route('/', {
  name: 'home',
    controller: MissionstatementpostController,
    waitOn:function () {
  return Meteor.subscribe('subheader', 'home');
  }
});

发布功能似乎工作正常。

Meteor.publish('subheader', function(cat) {
  return Subheader.find({category: cat});
});

来自mongodb集合的正确文档正在联系客户端。

可以看出这一点
Subheader.findOne(); output Object {_id: "NPo5cwqgjYY6i9rtx", texth: "ex text", category: "home"}

问题从这里开始

在这种情况下,控制器加载的模板MissionstatementpostControllerpostlist

<template name="postsList">
    <div class="posts page">
          {{> subheader}}
    <div class="wrapper">
      {{#each posts}}
        {{> postItem}}
      {{/each}}
    </div> 
    {{#if nextPath}}
      <a class="load-more" href="{{nextPath}}">Load more</a>
    {{else}}
      {{#unless ready}}
        {{> spinner}}
      {{/unless}}
    {{/if}}
  </div>
</template>

这是副标题模板

<template name="subheader">
    <div class="container">
        <p>{{{texth}}}</p>
    </div>
</template>

那我搞砸了什么?

感谢

1 个答案:

答案 0 :(得分:0)

您必须为子标题模板创建模板助手。要仅返回texth字段,帮助程序将是这样的。

Template.subheader.helpers({
  texth: function() {
    var sh = Subheader.findOne();
    return sh && sh.texth;
  }
});

您可以返回整个文档并使用模板中的#with帮助程序。

Template.subheader.helpers({
  subh: function() {
    return Subheader.findOne();
  }
});

<template name="subheader">
    {{#with subh}}
    <div class="container">
        <p>{{{texth}}}</p>
    </div>
    {{/with}}
</template>

您可以在Meteor Docs上找到有关模板助手的更多信息。