流星可重复使用的组件

时间:2014-04-07 00:49:43

标签: meteor

Meteor的可重用UI组件仍远在路线图上。什么是社区批准的最佳方法来创建可重用的组件?基于Session的系统似乎是全球性的。

我们说我想在1页上创建2个不同的聊天频道。我该怎么办?

2 个答案:

答案 0 :(得分:1)

假设您正在通过馆藏进行聊天......

我会这样,将一个特定值添加到进入MongoDB的聊天JSON中。比方说,用户test在聊天框hello world中发送消息1。我发送的JSON看起来像

{name: 'test', message: 'hello world', num: 1}

然后,在我的聊天帮助中,无论我在哪里显示新的聊天记录,我都会使用这样的get方法

UI.registerHelper(getChat, function(n){return Messages.find({num: n});})

将使用

在HTML中调用

{{#each getChat 1}}{{#each getChat 2}}或其他任何内容,具体取决于您拥有的聊天框数量。

这基本上只返回与特定聊天框对应的值。

祝你好运。

答案 1 :(得分:1)

如果你想使用动态而不是固定的param值,你可以尝试这个

// In memory collection for demonstration purpose
Messages = new Meteor.Collection(null);

if (Messages.find().count() === 0) {
    Messages.insert({name: 'test2', num: 1});
    Messages.insert({name: 'test5', num: 2});
    // [...] Init some test data
}

Template.test.helpers({
    // you can also use a collection
    chats: function() { return [{num:1}, {num:2}] },
});

// Took from Bob's example
UI.registerHelper('getChat', function(n){
    return Messages.find({num: n});
});

和你的模板

<template name="test">
    {{#each chats}}
        {{! num refer to a property of 'this'}}
        {{#each getChat num}}
            {{name}} <BR />
        {{/each}}
    {{/each}}
</template>

您可以在Blaze here

中详细了解自定义块助手