我对样式绑定有疑问。是否可以生成整个样式绑定文本?财产和价值部分在一起? 例如:
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样式元素进行文本绑定,但我想知道你是否可以做一些类似的,我提议的内容? 谢谢!
答案 0 :(得分:12)
style
binding的主要参数不是string
,而是
您应该传递 JavaScript对象,其中属性名称与样式名称相对应,并且值对应于您要应用的样式值。
所以你的fontSizeCSS
计算应该返回一个对象而不是一个字符串,它会正常工作:
this.fontSizeCSS = ko.computed(function() {
return {"fontSize": this.fontSize() + "px"};
}, this);
演示JSFiddle。