下面是一些表格代码。如果数据项的Id为0,我不希望显示该行。我试着这样写:
data-bind =“visible:$ data.Id> 0”
但那不起作用。也没有把0放在引号中。我也尝试过:
data-bind =“visible:$ index> 0”
但这会使所有行消失!我确定这是一个简单的语法问题,但我没有看到它......
<table>
<thead>
<tr>
<th>Name</th>
<th>URL</th>
<th>Disabled</th>
<th>Parent</th>
<th></th>
</tr>
</thead>
<tbody data-bind="foreach: menuItemModels">
<tr data-bind="visible: $data.Id > 0">
<td>
<input type="text" class="input-block-level" data-bind="value: $data.Name" /></td>
<td>
<input type="text" class="input-block-level" data-bind="value: $data.Url" /></td>
<td style="text-align: center;">
<input type="checkbox" data-bind="value: $data.Disabled" /></td>
<td>
<select data-bind="options: $root.menuItemModels, optionsValue: 'Id', optionsText: 'Name', value: ParentId"></select>
</td>
<td>
<button class="btn btn-primary" type="submit"data-bind="click: $root.update">Update</button>
<button class="btn btn-primary" type="submit" data-bind="click: $root.remove">Delete</button>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:9)
当您在表达式中访问observable的值时,您需要将其作为函数调用。
如果Id
是可观察的,那么您需要像$data.Id() > 0
一样调用它。
尽管visible
绑定的值是真值还是虚假,但是你真的可以将它减少到visible: Id
。当你将一个简单的observable传递给一个绑定(而不是在一个表达式中)时,Knockout会为你解包它(称之为函数)。
$index
也是一个可观察的,所以它也是一样的想法:visible: $index