如何使用样式数据绑定?

Posted

技术标签:

【中文标题】如何使用样式数据绑定?【英文标题】:How to use the style data bindings? 【发布时间】:2011-06-15 19:48:02 【问题描述】:

我在让样式绑定在 KnockoutJS 中工作时遇到困难。

<script id="avatarTemplate" type="text/x-jquery-tmpl">
  <div id="avatar_$id" class="avatar" data-bind="style: 
     background: s, width: '50px', height: '85px', left: (x + 'px'), top: 
    (y + 'px') ">$s, $x, $y</div> 
</script> 

<div data-bind="template:  name: 'avatarTemplate', foreach: avatars "></div> 

这个模板的渲染结果是:

<div id="avatar_1" class="avatar" style="width: 50px; height: 85px;">avatar.png, 0, 0</div> 

谁能帮我弄清楚为什么所有依赖于视图模型的样式都没有显示出来?

【问题讨论】:

【参考方案1】:

如果xy 是可观察的,那么你需要像这样指定它:

<div id="avatar_$id" class="avatar" data-bind="style: 
     background: s, width: '50px', height: '85px', left: (x() + 'px'), top: 
    (y() + 'px') ">$s, $x, $y</div> 

如果在表达式中使用 observable,则需要用 () 指定它,因为它不会自动解包。

http://jsfiddle.net/rniemeyer/6GtV3/

【讨论】:

啊,我想知道如何进行 KnockoutJS 连接.. 谢谢 :o) 天哪!只花了 30 分钟试图弄清楚这一点! =D 谢谢。也节省我的时间 太棒了。我正在正确访问 x() 和 y(),但我没有想到我需要添加单位“px”。谢谢【参考方案2】:

这不是一个直接的答案,但我在调查时搜索了这个页面。我有这样的事情:

<div data-bind="style:  backgroundImage: src ">

其中src 是我的模型对象中的一个值,例如“http://image.com/foo.jpg”。将 src 指定为上述答案中的函数没有帮助:

<div data-bind="style:  backgroundImage: src() ">

我发现如果src 值不是有效的背景图像属性,它会被完全忽略。

我不得不使用:

<div data-bind="style:  backgroundImage: 'url(\'' + src() + '\'' ">

可能会在某个时候为某人减轻一些痛苦:)

【讨论】:

感谢您抽出宝贵时间!这正是我正在寻找的用例!

以上是关于如何使用样式数据绑定?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自底层绑定源的行对 datagridview 行执行样式更改?

WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据

Vue 动态样式绑定

vue绑定样式不起作用

Android 数据绑定,从函数调用中设置 xml 样式

Vue 内联样式的数据绑定