使用挖空检查是否未定义

Using Knockout to check if undefined

本文关键字:是否 未定义 检查      更新时间:2023-09-26

我有一个模板,我想根据正在使用的控件使用不同的 HTML 位:

<!-- ko if: Value -->
    ........
<!-- /ko -->
<!-- ko ifnot: Value -->
    ........
<!-- /ko -->

此代码的目的是在定义Value时选择第一个位,如果未定义,则选择第二个位。但是,这总是会导致绑定错误:Value is not defined我相当确定错误只是检查控件是否已定义Value

有没有更好的方法来使用这些 if 语句来检查是否定义了绑定?

如果确实未定义Value,则可以使用$data.Value来避免"未定义"错误。

您可以使用动态模板。在视图模型中:

self.valueRenderer = ko.computed(function () {
    return ko.unwrap(self.Value) ? "valueTemplate" : "noValueTemplate";
});

在 HTML 中:

<div data-bind="template: valueRenderer"></div>
<!-- ... -->
<script type="text/html" id="valueTemplate">
    <!-- some complex template... -->
</script>
<script type="text/html" id="noValueTemplate">
    <div>There is no value...</div>
</script>