当两个条件之一为真时,我想绑定一个visible属性为true。类似于以下内容
<tr data-bind="visible: active || $parent.displayDeactive">....</tr>
当我执行一个或另一个绑定时,我的代码可以工作,但是当我放置||时,我的代码不起作用在那里。我没有找到任何文档说我可以在这个绑定中放置任何逻辑,但是如果我不能直接做到这一点是什么是最好的方法来做它因为我绑定模板的属性和$的一个对象parent viewmodel。
答案 0 :(得分:40)
如果在表达式中使用observable的值,则需要将它们作为函数引用。因此,如果active
和displayDeactive
是可观察的,您可以这样做:
data-bind="visible: active() || $parent.displayDeactive()"
有几种方法可以将其移至视图模型,您可以:
绑定中的逻辑示例以及在父级上使用函数:http://jsfiddle.net/rniemeyer/f6ZgH/
答案 1 :(得分:6)
在观察者之后添加parens,因为你正在评估它们。
<input type="checkbox" data-bind="checked:displayDeactive"> Display deactive</input>
<br/><br/>
<table>
<tbody data-bind="foreach: products">
<tr data-bind="visible: active() || $parent.displayDeactive()">
<td><span data-bind="text:name"></span></td>
</tr>
</tbody>
</table>
您可以在此处找到完整代码:http://jsfiddle.net/johnpapa/gsnUs/
您可以在计算表达式的模板化项目上使用计算属性(只是看到@RPNiemeyer也响应了这个......我+ 1)。