knockout.js 如何编写if/else语句

waxmsbnn  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(170)

我必须检查一个变量是否等于某个字符串。

if (product_type == "simple") { ... }

我怎么能在knockout.js中做到这一点呢?我已经阅读了documentation,但不确定在哪里查找。

尝试次数:

<!-- ko if: is_product_type && product_type == "simple" -->
<div class="primary">
    <a data-bind="attr: {href: configure_url, title: $t('foo')}" class="action edit">
        <span data-bind="i18n: 'Edit'"></span>
    </a>
</div>
 <!-- ko else: -->
<div class="primary">
    <a data-bind="attr: {href: configure_url, title: $t('bar')}" class="action edit">
        <span data-bind="i18n: 'Edit'"></span>
    </a>
</div>
<!-- /ko -->

↑不起作用,它呈现两者。

9bfwbjaz

9bfwbjaz1#

另一种选择是使用ifnot绑定。

<!-- ko if: product_type == "simple" -->
<div class="primary">
    <a data-bind="attr: {href: configure_url, title: $t('foo')}" class="action edit">
        <span data-bind="i18n: 'Edit'"></span>
    </a>
</div>
<!-- /ko -->

<!-- ko ifnot: product_type == "simple" -->
<div class="primary">
    <a data-bind="attr: {href: configure_url, title: $t('bar')}" class="action edit">
        <span data-bind="i18n: 'Edit'"></span>
    </a>
</div>

编辑

这是一个简单的演示,演示如何将一些决策从html中移到视图模型中。
第一次
第一个

6jygbczu

6jygbczu2#

看起来knockout.js甚至不支持else,所以您必须创建一个肮脏的解决方案:

<!-- ko if: product_type == "simple" -->
    <div class="primary">
        <a data-bind="attr: {href: configure_url, title: $t('foo')}" class="action edit">
            <span data-bind="i18n: 'Edit'"></span>
        </a>
    </div>
<!-- /ko -->

<!-- ko if: product_type != "simple" -->
    <div class="primary">
        <a data-bind="attr: {href: configure_url, title: $t('bar')}" class="action edit">
            <span data-bind="i18n: 'Edit'"></span>
        </a>
    </div>
<!-- /ko -->

相关问题