【发布时间】:2019-11-24 21:28:44
【问题描述】:
有一种情况,timelsots 列表在天下列出,并且此数据是动态来自服务器的。现在用户应该选择给定日期的所有时间段。类似于 fiddle 中的内容。我正在尝试遵循 knockout documentation 上的示例,但在此示例中,标题复选框不是动态的。以同样的方式如何维护多个列表的引用?
<ul class="header" data-bind="foreach: days">
<li>
<label>
<input type="checkbox" data-bind="attr: { id: 'chk' + id }"/>
<span data-bind="text: name"></span>
</label>
<ul data-bind="foreach: timeslots">
<li>
<label>
<input type="checkbox" data-bind="attr: { id: 'chk' + id }"/>
<span data-bind="text: name"></span>
</label>
</li>
</ul>
</li>
function MyViewModel() {
this.days = ko.observableArray([
{ name:"Sunday", id:1 , timeslots : [{ name:"10:00 - 11:00", id:10},{ name:"10:00 - 11:00", id:11},{ name:"10:00 - 11:00", id:12}] },
{ name:"Monday", id:2 , timeslots : [{ name:"10:00 - 11:00", id:20},{ name:"10:00 - 11:00", id:21},{ name:"10:00 - 11:00", id:22}] },
{ name:"Tuesday", id:3 , timeslots : [{ name:"10:00 - 11:00", id:30},{ name:"10:00 - 11:00", id:31},{ name:"10:00 - 11:00", id:32}] },
{ name:"Wednesday", id:4 , timeslots : [{ name:"10:00 - 11:00", id:40},{ name:"10:00 - 11:00", id:41},{ name:"10:00 - 11:00", id:42}] },
{ name:"Thursday", id:5 , timeslots : [{ name:"10:00 - 11:00", id:50},{ name:"10:00 - 11:00", id:51},{ name:"10:00 - 11:00", id:52}] },
{ name:"Friday", id:6 , timeslots : [{ name:"10:00 - 11:00", id:60},{ name:"10:00 - 11:00", id:61},{ name:"10:00 - 11:00", id:62}] },
{ name:"Saturday", id:7 , timeslots : [{ name:"10:00 - 11:00", id:70},{ name:"10:00 - 11:00", id:71},{ name:"10:00 - 11:00", id:72}] }
]);
this.selectedDays = ko.observableArray([
{ id:1 , timeslots : [{ name:"10:00 - 11:00", id:10},{ name:"10:00 - 11:00", id:12}] },
{ id:2 , timeslots : [{ name:"10:00 - 11:00", id:21}] }
]);
}
ko.applyBindings(new MyViewModel());
我想要实现的功能是 示例 2:选择/取消选择所有项目在淘汰文档链接中,但我不知道如何在我的场景中实现 pureComputed 函数。 p>
【问题讨论】:
-
究竟是什么不起作用?有点不清楚
-
我正在尝试添加一些代码,但某些格式错误不允许更新
-
在检查
Sunday时,您想检查Sunday中的所有插槽,反之亦然?selectedDays是如何工作的?如果我在 Sunday 选择 10:00-11:00,selectedDays是否有{ id:1 , timeslots : [{ name:"10:00 - 11:00", id:10}] }作为数据? -
检查周日应检查示例中的所有插槽,所有天应检查相应列表中的取消检查。拥有 selectedDays 是个问题。
data是正确的,但是我们需要与原始数组进行比较并选择全部或取消选中标题复选框。
标签: javascript html knockout.js