durandal敲除复选框多维数组

durandal knockout checkbox multidimensional array

本文关键字:数组 复选框 durandal      更新时间:2023-09-26

我一直在寻找解决方案,但什么都找不到,所以我向您寻求帮助。淘汰是从ajax调用中获取这个数组:

[{"period_id":"2","room_id":"1","room_name":"CDI","room_description":"bla bla","days":[{"day_id":"1","day_name":"Montag"},{"day_id":"2","day_name":"Dienstag"}],"specials":[]}]

我的问题是数组days和视图中复选框的绑定:

<td>
                <label class="checkbox-inline">
                    <input type="checkbox" id="monday" value="1" data-bind="checked: days['day_id']"> Montag
                </label>
                <label class="checkbox-inline">
                    <input type="checkbox" id="tuesday" value="2" data-bind="checked: days['day_id']"> Dienstag
                </label>
                <label class="checkbox-inline">
                    <input type="checkbox" id="wednesday" value="3" data-bind="checked: days['day_id']"> Mittwoch
                </label>
                <label class="checkbox-inline">
                    <input type="checkbox" id="thursday" value="4" data-bind="checked: days['day_id']"> Donnerstag
                </label>
                <label class="checkbox-inline">
                    <input type="checkbox" id="friday" value="5" data-bind="checked: days['day_id']"> Freitag
                </label>
            </td>

所以我希望,当复选框的值在days中时,选中一个复选框。这怎么可能呢?

谢谢你的帮助!

数据绑定通常是双向通信。如果有人选中了复选框,你预计会发生什么?

如果你只是想要一个视觉表现,你可以使用像这样的商品

<!-- ko if: days[day_id] != null -->
// some green check image
  <img src="check" />
<!-- /ko -->
<!-- ko if: days[day_id] == null -->
// red cross image
   <img src="no check" />
<!-- /ko -->

此外,您应该为数据创建一个视图模型,不要试图与ajax调用的结果直接进行过多的交互

例如

week: {
   monday: ko.computed(function() {
     return ko.utils.arrayFirst(days , function(day){ return day.day_id == 1;}) != null
     });
   tuesday: ... etc
}