【发布时间】:2014-12-31 13:18:06
【问题描述】:
例如,我想将视图模型中的一个属性绑定到一个元素的高度,因此如果它的高度发生变化,它会更新该属性。 我读了这个例子,但它只显示了一个方向绑定: http://knockoutjs.com/documentation/style-binding.html ,表示更新属性会更新样式,否则不会。
我想做的是这样的:
<div class="panel-body" data-bind="style: {height: chatParentHeight}">
<div data-bind="style: { height: chatHeight}">
</div>
</div>
在视图模型中:
self.chatParentHeight = ko.observable();
self.chatHeight = self.chatParentHeight();
因此,父元素的高度会受到监控,如果发生变化,它也会更改子元素的高度,因为它已绑定到它。但是更新高度样式时不会更新视图模型。我也尝试使用 backgroundColor 来简化它,但效果不佳。
【问题讨论】:
-
这有点乐观是不是 :D 你必须为此创建一个自定义绑定
-
我花了很长时间才明白我必须这样写:
data-bind="style: {height: chatParentHeight() +'px'} -
嘿嘿,我曾经为那个挣扎过。虽然我建议为此使用 ViewModel,但您可以对其进行单元测试并保持视图更清晰。
-
正是我所做的!谢谢。