Meteor的可重用UI组件仍远在路线图上。什么是社区批准的最佳方法来创建可重用的组件?基于Session的系统似乎是全球性的。
我们说我想在1页上创建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
中详细了解自定义块助手