敲除if,click和visible binding

iim*_*nov 4 data-binding conditional visibility knockout.js

很简单的问题.

假设我在我的视图()中有这个HTML:

<a id="btnXYZ" class="" data-bind="click: editAction">Button</a>
Run Code Online (Sandbox Code Playgroud)

editAction单击时将执行的简单锚标记.

现在,如果我有这样的事情:

<a id="btnXYZ" class="" data-bind="click: editAction, if: isOwner(ref)">Button</a>
Run Code Online (Sandbox Code Playgroud)

让我们说isOwner(ref)评估为真,我看到锚没有文字.不好.

预期结果与之前相同(第一个例子).

现在让我说我有这样的事情:

<div class="">
    <a id="btnX" class="" data-bind="click: editAction, if: isOwner(ref)">Button</a>
    <a id="btnY" class="" data-bind="click: editAction, if: isOwner(ref)">Button</a>
    <a id="btnZ" class="" data-bind="click: editAction, if: isOwner(ref)">Button</a>
</div>
Run Code Online (Sandbox Code Playgroud)

与之前相同,如果isOwner(ref)求值为true,请参阅空锚标记.

问题:
如何绑定if: isOwner()管理按钮可见性?


如果isOwner(ref)评估true我应该看到一个正确的链接/按钮,
如果isOwner(ref)评估false我应该看到根本没有链接/按钮

Vla*_*irs 5

您可以使用虚拟元素来实现:

<!-- ko if: isOwner(ref) -->
    <a id="btnXYZ" class="" data-bind="click: editAction">Button</a>
<!-- /ko -->
Run Code Online (Sandbox Code Playgroud)

此外,如果你想要你可以显示完全不同的东西,如:

<!-- ko ifnot: isOwner(ref) -->
    whatever you want
<!-- /ko -->
Run Code Online (Sandbox Code Playgroud)