4

以下はテーブルコードです。データ項目の 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>
4

1 に答える 1

9

式でオブザーバブルの値にアクセスするときは、それを関数として呼び出す必要があります。

が観察可能な場合Idは、 のように呼び出す必要があります$data.Id() > 0

ただし、visibleバインディングは値が true/falsy であるかどうかに基づいて機能するため、実際には に減らすことができますvisible: Id。シンプルなオブザーバブルを (式ではなく) バインディングに渡すと、Knockout はそれをアンラップします (関数として呼び出します)。

$indexも観測可能であるため、次のような同じ考えになります。visible: $index

于 2013-02-17T04:23:54.393 に答える