【问题标题】:Meteor conditional CSSMeteor 条件 CSS
【发布时间】:2014-12-25 00:26:27
【问题描述】:

如何将background-color: #ccc 设置为{{colorLike}} 助手?此颜色用于列表项。

<template name="viewPost">
Names:
{{#each userNames}}
<li class="name"><a class="{{colourLike}}" href="{pathFor 'viewItem'}" >{{name}}</a></li>
{{/each}}
</template>

我还想在bacground-colour: #fff 中注册另一个助手{{colorDislike}}。这样如果元素存在于特定字段中,{{colourDislike}} 将覆盖{{colorLike}}。我正在收集我可以通过“if”语句来实现这一点。

Template.viewPost.helpers({
    userNames: function(){
        var selectedPostId = Session.get('postId');
        var arrayOfLike = Posts.find({_id: selectedPostId}, {fields: {likes: 1}}).fetch();
        var sumArray = _.chain(arrayOfLike).pluck('likes').flatten().value();
            return Meteor.users.find({_id: {$in: sumArray}});
},
});

所选帖子来自另一个模板的会话集,该模板是在单击帖子标题时创建的。单击后,用户可以看到喜欢该帖子的所有用户名的列表。所以我的目标是让这些名称&lt;li class="name"&gt;&lt;a class="{{colourLike}}" href="{pathFor 'viewItem'}" &gt;{{name}}&lt;/a&gt;&lt;/li&gt; 具有某种颜色。

当用户单击名称时,他们可以在 viewItem 模板上查看此特定用户配置文件中的字段“item”。该模板还显示了一个“不喜欢”该项目的按钮。如果是这样,则该项目的用户 ID 存储在 Post 文档的“不喜欢”字段中。

<template name="viewItem">
 {{profile.item}}
  <div class="dislike">
    <button type="button" class="btn btn-default btn-lg">
     <span class="glyphicon glyphicon-remove"></span> Dislike
    </button>
 </div>
</template>

【问题讨论】:

  • 你能不能也给我们看看帮助代码。 colorlike 助手返回什么
  • 这是我不知道怎么做的,我在引用stackoverflow.com/questions/12127076/…
  • 喜欢/不喜欢如何决定。你的 title 对象是否有任何属性表明它很讨人喜欢?
  • 不,基本上,这些都是存在于“喜欢”字段中的数组中的所有用户用户 ID。此文档在 Post 集合中。本质上,我返回 Meteor.users.find({_id: {$in: sumArray}}),对不起,我粘贴了我的代码的错误部分,这些是用户名。请与我裸露,我会做出改变

标签: javascript css meteor spacebars


【解决方案1】:

最惯用的方法是应用语义类 - 例如“喜欢”或“不喜欢” - 然后在 CSS 中,将背景颜色应用于具有该类的元素。

{{#each likingUsers}}
  <li class="name"><a class="liked" href="{{pathFor 'viewItem'}}" >{{name}}</a></li>
{{/each}}
{{#each dislikingUsers}}
  <li class="name"><a class="disliked" href="{{pathFor 'viewItem'}}" >{{name}}</a></li>
{{/each}}

这里的likingUsers 是你已经写过的userNames 助手,dislikingUsers 是相似的,但它会吸引不喜欢它的用户。

/* css */

a.liked {
  background-color: #ccc;
}

a.disliked {
  background-color: #fff;
}

这样,如果您以后决定以不同的方式设置喜欢/不喜欢的帖子的样式 - 例如将喜欢的帖子设为绿色,或在不喜欢的帖子上添加删除线 - 您只需更改 CSS,而不是 JS 代码或 HTML 模板。

【讨论】:

  • 这段代码似乎最合乎逻辑。但是,我在浏览器控制台中收到以下错误。你以前见过吗?...“路由调度从未呈现。你忘了在 onBeforeAction 中调用 this.next() 吗?”
  • 这似乎是一个无关的问题,你的路由器一定有问题。
  • 我会调查的。感谢您的输入!我不确定这是否与刚才更新到流星 v1 有关。我将代码恢复到以前的状态,但仍然出现此错误。
  • 我更新到流星 1.0 并得到了同样的错误,但我确实记得看到 Iron Router 中的非向后兼容更改。
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多