【问题标题】:durandal knockout checkbox multidimensional arraydurandal 剔除复选框多维数组
【发布时间】:2015-05-04 12:37:12
【问题描述】:

我已经寻找了很长时间的解决方案,但我找不到任何东西,所以我向你寻求帮助。淘汰赛正在从 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 中时。这怎么可能?

感谢您的帮助!

【问题讨论】:

  • 如果你把它放在 jsfiddle 中会很有帮助,即使示例不起作用也可以。

标签: javascript knockout.js durandal


【解决方案1】:

数据绑定通常是双向通信。如果有人选中该复选框,您希望会发生什么?

如果你只是想要一个视觉表示,你可以使用这样的东西

<!-- 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2012-11-12
    • 2018-10-07
    • 1970-01-01
    • 2012-09-11
    • 2014-05-29
    相关资源
    最近更新 更多