0

我的应用程序是产品列表。

我有太多,并且想将它们分组,所以我可以重构我的publish/subscribe代码(以及我的模板)。

假设我的 mongodb 中有 4 个不同的集合:balloons, balls, tents, tea.

我需要将它们分组到新创建foo的和bar. 然后我可以编写两个发布/订阅语句而不是 4 个,并通过执行以下操作访问我的数据:

在客户端:

Foo = new Meteor.Collection('foo');
Bar = new Meteor.Collection('bar');

在 html 模板中

{{#each foo.balloons }}

    <p>{{ size }}</p>  
    <p>{{ price }}</p>

{{/each}}

或在另一个 html 模板中

{{#each bar.tents }}

    <p>{{ size }}</p>  
    <p>{{ price }}</p>

{{/each}}
4

1 回答 1

2

就我个人而言,我不会将它们分成多个集合。我会添加一个变量,例如“group”,其值为“balloons”、“balls”、“tents”或“tea”。

然后订阅时,您可以选择同时订阅一个或多个组。然后在您的助手中,只需执行以下操作:

Template.foo.helpers({
    balloons : function() {
        return Foo.find({
            "group" : "balloons"
        });
    },
    tents : function() {
        return Foo.find({
            "group" : "tents"
        });
    }
});

Template.bar.helpers({
    balls : function() {
        return Foo.find({
            "group" : "balls"
        });
    },
    tea : function() {
        return Foo.find({
            "group" : "tea"
        });
    }
});

根据要求更新:

<body>
    {{> foo}}
    {{> bar}}
</body>

<template name="foo">
    <div id="balloons" class="product-list">
        {{#each balloons}}
            {{> productItem}}
        {{/each}}
    </div>
    <div id="tents" class="product-list">
        {{#each tents}}
            {{> productItem}}
        {{/each}}
    </div>
</template>

<template name="bar">
    <div id="balls" class="product-list">
        {{#each balls}}
            {{> productItem}}
        {{/each}}
    </div>
    <div id="tea" class="product-list">
        {{#each tea}}
            {{> productItem}}
        {{/each}}
    </div>
</template>

<template name="productItem">
    <div class="product">
        <h1>{{title}}</h1>
        <p>{{description}}</p>
    </div>
</template>
于 2014-08-19T13:04:17.447 回答