我认为这将是一件简单的事情,但我基本上有一个可观察的对象数组,其中包含如下数据:
{
BasicType: "some-type",
ExtendedType: "some-extended-type",
DisplayType: "some-display-type"
}
数据字段始终在模型中,如果没有数据可以显示,它们将是空字符串。
现在这个模型在整个系统中使用,是一个简单的 POJO,视图模型只包含其中的许多,当视图中需要它们时。因此,我不想将任何特定于视图的问题放在“this”对象上,但是可以将它们放在由许多这些较小模型组成的视图模型中。
无论如何,在视图中添加了所有字段,但如果有更适用的类型可用,则每个字段都有一个 if 来禁用它。所以一个例子是这样的:
<div data-bind="text: BasicType, if: (BasicType && !ExtendedType && !DisplayType)"/>
<div data-bind="text: ExtendedType, if: (!BasicType && ExtendedType && !DisplayType)"/>
<div data-bind="text: DisplayType, if: (!BasicType && !ExtendedType && DisplayType)"/>
但是由于某种原因,它并没有像我预期的那样做,我尝试更改!xType
forxType == ''
但是也没有这样的运气,并且还使用括号强制评估但没有。那么我是否遗漏了一些东西,或者如果不处理多个元素,knockoutjs 可以吗?
如果有一种简单的方法,我很乐意将这些转换为计算的 observables,但是由于这些模型用于跨页面并作为与 web 服务的合同(它们就像数据层)我不想更改它们,并且我不知道如何将计算值添加到对象中,除非当我得到它们时,我循环每个对象,然后将计算的 observables 添加到每个对象中,然后使用它。
无论如何,情况就是这样,任何建议都会很棒!