所以我有一个看起来像这样的viewModel
self.zones = ko.observableArray(zones);
ko.utils.arrayForEach(self.zones(), function (zone) {
//Get all rooms for the zone
zone.rooms = getChildren("Organization", "Organization", zone.ID);
if (zone.rooms.length > 0) {
zone.buttons = ko.observableArray([]);
//For each Room in Zone find the Buttons and add them to the Zone.buttons ObservableArray
ko.utils.arrayForEach(zone.rooms, function (room) {
room.buttons = getChildren("Organization", "ButtonAssign", room.ID, { scheduleID: self.scheduleID });
ko.utils.arrayForEach(room.buttons, function (button) {
zone.buttons.push(button);
});
});
}
所以你可以看到一个区域有一个叫做按钮的属性,它是一个 Observable 数组
在我看来,我遍历每个区域并输出按钮,但我的一个区域不包含任何按钮并引发此异常:
错误:无法解析绑定。消息:ReferenceError:未定义按钮;绑定值:foreach:buttons
<table>
<tbody>
<tr data-bind="foreach: zones" style="vertical-align: top;">
<div class="zoneDiv">
<span data-bind="text: Name"></span>
<div data-bind="foreach:buttons" class="buttonsList">
<div class="buttonField">
<div data-bind="text: Name" style="float: left; width: 140px;">
</div>
</div>
<input type="hidden" data-bind="value: ID" />
</div>
</div>
</td>
</tr>
</tbody>
</table>
所以我的问题是:在开始循环之前如何检查可观察数组中的空值?
此外,您如何检查单个属性(例如 button.Name)上的空值,以便如果按钮有名称,我会将其写在 div 中,如果没有,我不会写出任何内容(或默认文本)。
所以基本上对视图中的视图模型属性进行空检查,所以我不会得到这个异常
谢谢