7

我有一个关于样式绑定的问题。是否可以生成整个样式绑定文本?那么属性和价值部分在一起呢?例如:

    function ViewModel() {
    this.fontSize = ko.observable(12);

    this.fontSizeCSS = ko.computed(function() {
        return "font-size: " + " " + this.fontSize() + "px";
    }, this);

}

// Activates knockout.js
ko.applyBindings(new ViewModel());

简单的方法是这样做:

<div data-bind="style: { fontSize: fontSize()  + 'px'}">
    <p>Lorem ipsum</p>
</div>

是否可以这样做(我试过了,它没有用):

<div data-bind="style: { fontSizeCSS() }">
    <p>Lorem ipsum</p>
</div>

如果是,如何?如果不是,为什么不呢?可以将文本绑定到 html 样式元素,但我想知道您是否可以做一些类似的事情,我建议的是什么?谢谢!

4

1 回答 1

12

style绑定的主要参数不是 a string,而是

您应该传递一个JavaScript 对象,其中属性名称对应于样式名称,值对应于您希望应用的样式值。

所以你的fontSizeCSS计算应该返回一个对象而不是一个字符串,它会正常工作:

this.fontSizeCSS = ko.computed(function() {
        return {"fontSize": this.fontSize() + "px"};
}, this);

演示JSFiddle

于 2013-09-01T18:00:33.880 回答