Javascript 流星{{{每个}}–;每个项目的条件格式
我从数据库中获取了一个游标,并使用{{{each}}helper标记执行通常的“列出每个项” html 但是,由于每个项目属于n个类别中的一个,我想a)确定它是哪一个类别,b)相应地更改Javascript 流星{{{每个}}–;每个项目的条件格式,javascript,meteor,handlebars.js,Javascript,Meteor,Handlebars.js,我从数据库中获取了一个游标,并使用{{{each}}helper标记执行通常的“列出每个项” html 但是,由于每个项目属于n个类别中的一个,我想a)确定它是哪一个类别,b)相应地更改span类别 换句话说,类别的名称与字符串耦合,我现在用字符串代替{{{this}},并存储在一个单独的集合中,例如 { "_id": "whatnot" "item": "item1", "category": "bar" } 目的是比较它们并确定与类别匹配的类别: {{#each item}}
span
类别
换句话说,类别的名称与字符串耦合,我现在用字符串代替{{{this}}
,并存储在一个单独的集合中,例如
{
"_id": "whatnot"
"item": "item1",
"category": "bar"
}
目的是比较它们并确定与类别匹配的类别:
{{#each item}}
<span class="[[what "category" does ‘this’ belong to?]]">{{this}}</span>
{{/each}}
{{{#每个项目}
{{this}}
{{/每个}}
如果这是不可能的,或者是一种不好的方法,我会很感激任何关于更好架构的建议,因为我认为这可能是问题所在。谢谢 一种更干净的方法是直接进入收藏
#光标上的每个
{{{items}}
,而不是一个月后才知道wtf{{This}}
。其次,您将在数据上下文中拥有该类别,因此可以为其编写帮助程序。例如,如果希望所有bar
类别项目都具有baz
类:
return(this.category=='bar')&&&baz'
您可以使用助手执行此操作:
HTML:
这假设您的Items集合通过名为categoryId的键链接到Categories集合-您的集合名称和键可能不同。它还假设您已经为可能的类别名称设置了css类
你可能会想,“哎呀,每次我显示一个项目时,我都必须运行搜索?”答案是“是的,但是minimongo真的很快,所以不要担心。”你在客户端的内存中搜索,而不是通过网络到服务器到磁盘
通常情况下,项目帮助器会返回一个游标,例如:
Items.find(query)
,但看起来您正在执行find并将其填充到其他地方的会话变量中。您可能可以摆脱这一额外步骤。谢谢您的回复,但我不确定我是否理解。可能还不清楚我有两个独立的集合,其中一个包含项目,另一个包含它们所属的类别,我需要通过值匹配它们。请明确说明你在每个步骤中指的是哪一个?我为自己的愚蠢道歉,但我只是从《流星》开始的,事实上大部分的JS都是在两天前开始的。啊,不知道这是两个系列。考虑项目分类中的分类和粘贴类别。在NoSQL中,反规范化,尤其是在只有一个字段的情况下,几乎总是正确的选择。这样做,您可以更轻松地查询,您不需要订阅第二个收藏,等等。我的错,我应该更明确,对不起!谢谢你的提示,我也会看看非规范化。我也是Mongo的新手,所以需要一段时间,但我需要应用程序另一部分的第二个集合–例如,将这两个集合视为帖子和用户,另外,其中一个正在由外部刮板进行更新,所以有点乱。我将添加我几乎标准的评论,看看您是否正在做感觉像关系连接的事情。非常好的帮助,非常感谢!尽管出于某种原因,我不得不根据尝试和错误进行一些调整,特别是:Categories.findOne({“my_id”:this.toString()}).category
我确实在别处执行find,因为我将它馈送到aslagle/reactive表
,然后根据单击的行显示这些项目,因此上面只是一个简单的示例。我会设法弄明白,并编辑我的帖子以备将来参考,但现在我很高兴它能起作用。:)
{
"_id": "whatnot"
"item": "item1",
"category": "bar"
}
{{#each item}}
<span class="[[what "category" does ‘this’ belong to?]]">{{this}}</span>
{{/each}}
<template name="name">
{{#each item}}
{{> item}}
{{/each}}
</template>
<template name="item">
<span class="{{category}}">{{this}}</span>
</template>
Template.name.helpers({
item: function(){
return Session.get('foo').items
}
});
Template.item.helpers({
category: function(){
return Categories.findOne({_id: this.categoryId}).category;
}
});