【问题标题】:How to access the subscriptions inside the HTML file?如何访问 HTML 文件中的订阅?
【发布时间】:2017-09-12 12:58:47
【问题描述】:

通常当我使用助手时,我可以访问返回值如下:

Template.oveview.helpers({
    item: function () {
        return Requests.find({});
    },

然后在客户端我可以使用{{#each item}},但是我不知道在使用publishsubscribe时如何在.html中显示它们

这是我的发布:

Meteor.startup(() => {
    Meteor.publish('requests', function queryRequests() {
        return Requests.find({});
    });

});

这是我的订阅:

Template.overview.onCreated(function() {
    Meteor.subscibe('requests');
});

如何在客户端显示发布的返回值?

【问题讨论】:

  • onCreated 回调中使用的publishsubscribe 只会影响返回函数Requests.find({}); 的内容,您无需更改任何内容。 PS:你在代码中拼错了subscribe

标签: meteor publish-subscribe


【解决方案1】:

您可以通过几种不同的方式使用它。您可以使用 Meteor 模板为现有 HTML 之间的每个项目插入 HTML sn-p:

{{#each item}}
    {{> htmlTemplateName}}
{{/each}}

或者您可以将原始 HTML 放在 {{#each}} 循环中:

{{#each item}}
    <p>{{propertyX}}</p>
    <p>{{propertyY}}</p>
{{/each}}

您可能会遇到发布订阅问题,具体取决于加载顺序(恐怕我不知道加载顺序)。我在我的项目中使用了 iron-router 包,将某些端点绑定到特定的 HTML 文件。 Iron-router 有一个很好的参数,你可以为每个页面设置,称为waitOn,我在其中放置了我的订阅。这意味着订阅某个集合会发生在其他任何事情之前。

Router.configure({
    layoutTemplate: '_layoutTemplate',
    name: 'myTemplateName',
    waitOn: function() {
        return [
            Meteor.subscribe('requests'),
            //Add other subscriptions here
        ];
    }
});

【讨论】:

  • 我编辑了这个问题,以便更清楚地说明我想要什么。对不起,一开始的澄清很差。我想显示从发布返回的值
  • 您发布的返回值是集合。还是要返回指向集合的光标?
  • 我希望能够在客户端显示集合。如果我从客户端的助手返回集合,我可以做到这一点。但我认为使用发布和订阅会更安全。但我似乎无法在客户端显示它们。
  • @BehrouzRiahi 正如@Magicbjørn 向您展示的那样,您只需在{{#each ...}}...{{/each}} 循环中显示文档字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2016-08-30
  • 2016-01-15
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多