根据模板值动态设置CSS属性

是否可以根据handlebars.js模板值动态设置输入字段的文本颜色

我最初使用这个模板创建我的html:

<div class="board">
    <div class="header">
        <span class="name">Project</span>
        <span class="status">Status</span>
    </div>
    {{#each projects}}
    {{> project}}
    {{/each}}
</div>

项目是从数据库读取的对象.每个项目生成的html(在页面上呈现的内容而不是我的html中的内容)看起来像这样:

<div class="project">
    <span class="name">FOO</span>
    <span class="status">OK</span>
</div>
<div class="project">
    <span class="name">BAR</span>
    <span class="status">NOTOK</span>
</div>

我想用OK&的颜色渲染这个HTML. NOTOK动态设置文本.

我已经有一个把手辅助函数,可以根据每个选项成功返回正确的颜色代码,我可以使用以下方法调用它:

{{getStatusColor currentStatus}}

我想做的是将这个函数调用直接放入css本身,有点像:

font-color: {{getStatusColor currentStatus}}

但显然这不起作用.这个功能确实感觉像是正确的方法,但我在哪里可以使用它在页面上正确格式化文本?

解决方法

回答我自己的问题:需要扩展模板(从{{> projects}})以允许条件渲染.
<div class="board">
    <div class="header">
        <span class="name">Project</span>
        <span class="status">Status</span>
    </div>
    {{#each projects}}
    <div class="project">
        <span class="name">{{name}}</span>
        <span class="status" style="color:{{getStatusColor status}}">{{status}}</span>
    </div>
    {{/each}}
</div>

为完整起见,辅助函数getStatusColor如下所示:

Handlebars.registerHelper('getStatusColor',function(status) {
    switch (status) {
        case "GOOD" : {
            return 'green';
        }
        break;
        case "BAD" : {
            return 'red';
        }
        break;
        default : {
        ...etc.;
    }
});

更新:
为了诚实,我应该承认我完全错过了我已经在我的代码中使用了这个扩展模板{{> projects}}指向这个.我应该直接将style =“color:{{getStatusColor status}}”属性添加到引用的项目模板中.因此,尽管我和其他人一样受益,最终的,有效的,HTML:

<template name="foo">
    <div class="board">
    <div class="header">
        <span class="name">Project</span>
        <span class="status">Status</span>
    </div>
    {{#each projects}}
    {{> project}}
    {{/each}}
    </div>
</template>

<template name="project">
    <div class="project {{selected}}">
        <span class="name">{{name}}</span>
        <span class="status"style="color:{{getStatusColor status}}">{{status}}</span>
    </div>
</template>

相关文章

前言 最近项目做完,用户需要兼容IE,于是开展了兼容性的调整工作。边调整边想感叹IE真是个沙雕。。特将...
前言 有些属性不是很常用,但是工作中遇到了,记录一下,方便学习。 1、text-indent text-indent 属性规...
前言 政府网站会遇到公祭日的时候,网站整体颜色变灰的情况。今天正好调了一下。在此把解决方案分享给大...
需求 项目里有个消息中心,当有消息的时候,小铃铛图标可以晃两下,提示当前有信息。 实现过程 书写css...
html代码 css代码 效果图
在一些界面上 , 如果每个icon都去找图片还是相当麻烦的 , 直接使用css画出icon就方便的多了 , 下面两个...