knockout.js 使用表数据中可观察到的knockout值来应用CSS类

jmo0nnb3  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(162)

portAvailable$root.devices中每个设备的一个可观察布尔值。当设备端口不可用时,portAvailablefalse,CSS类text-warning应该添加到设备的td元素中。
下面的ifnot数据绑定确实可以工作,所以我尝试应用CSS数据绑定的方式有问题,而不是可观察性本身。

<table class="table table-condensed">
<thead>
    <tr>
        <td style="text-align:center">{{ _('Name') }}</td>
        <td style="text-align:center">{{ _('Port') }}</td>
    </tr>
</thead>
<tbody data-bind="sortable: { data: $root.devices, options: { cancel: '.unsortable', handle: '.moveDevice', axis:'y'} }">
    <tr>
        <td><span data-bind="text: name"></span></td>
        <td data-bind="css: {'text-warning': portAvailable == false}">
            <span data-bind="text: port"></span>
            <i class="fa fa-exclamation-triangle" title="{{ _('Port currently unavailable') }}" data-bind="ifnot: portAvailable"></i>
        </td>
        <td style="text-align:right">
            <div class="btn-group">
                <a href="#" class="btn btn-mini moveDevice"><i class="fa fa-arrows-alt" aria-hidden="true"></i></a>
            </div>
        </td>
    </tr>
</tbody>
9jyewag0

9jyewag01#

我猜portAvailable是一个可观测的,你需要在表达式中展开它:

<td data-bind="css: {'text-warning': portAvailable() === false}">

ifnot绑定之所以能够工作,是因为像所有绑定一样,如果它们接收的都是一个可观察的对象,那么它会在必要时为您展开可观察的对象。

相关问题