12

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

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

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

这段代码的目的是如果定义了则选择第一位,如果Value没有定义则选择第二位。但是,这总是会导致绑定错误:Value is not defined我很确定仅检查控件是否已Value定义错误。

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

4

2 回答 2

37

如果Value确实未定义,那么您可以使用$data.Value来避免“未定义”错误。

于 2013-11-08T16:06:20.430 回答
2

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

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>
于 2013-11-08T16:10:20.540 回答