我有一个包含多个可观察对象(预算、公司、成本中心)的视图模型。Budgets 有一个 CostcenterID 和一个计算出的 observable,它根据 costcenterid 从 costcenterlist 中返回该预算的成本中心。costCenter 有一个 companyID 和一个计算出的 observable,它根据 companyId 从公司列表中返回该成本中心的公司。
在我看来,我对预算有约束力,我有
<td>
<select data-bind="options:$root.Costcenter,optionsCaption:'cost center', optionsText:'Title', optionsValue:'Id', value:CostCenterId "></select>
</td>
<td>
<span data-bind="text:CostCenter().Company().Title"></span>
</td>
如果预算有成本中心,它可以正常工作,但是当给定预算的成本中心不存在时,我会收到一个绑定错误
0x800a139e - Microsoft JScript 运行时错误:无法解析绑定。
消息:TypeError:对象不支持此属性或方法;
绑定值:文本:CostCenter().Company().Title
(如果根据 costcenterID 没有找到成本中心,我为 costCenter 计算的 observable 返回一个空的 Object {})。
处理这个问题的最好方法是什么,而不用一堆 if 语句来检查对象是否为空?