绑定计算对象的多个样式

时间:2016-07-22 11:47:00

标签: knockout.js

我有一个计算值,其中包含其他计算值的合并,然后我将其绑定到我的元素:

HTML

<td data-bind="text: displayNamePipeJob, attr: primaryStyling()"></td>

JS

self.primaryStyling = window.ko.pureComputed(function()
{
    return {
        style: 'color: ' + self.primaryFontColor() + '; font-family: ' + self.fontFamily()
    }
});

为避免以这种方式构建手动字符串的丑陋,有没有办法将style作为某种具有属性的对象提供,例如:

self.primaryStyling = window.ko.pureComputed(function()
{
    return {
        style: {
            'color': self.primaryFontColor(),
            'font-family:': self.fontFamily()
        }
    }
});

可悲的是,这会输出到style="[object Object]"

1 个答案:

答案 0 :(得分:0)

淘汰的目标之一是将您的视图与模型分开 - 因此直接从模型返回整个样式信息可能并不完全正确。

我会接近它,其中模型包含有效的配置信息,并且视图使用它。为了这个目的,淘汰赛有一个style binding

<td data-bind="text: displayNamePipeJob, style: {color: primaryColor, fontFamily: fontFamily }"></td>

如果以比您的示例更复杂的方式计算值,则可以为每个样式属性构建单独的computed函数。