Javascript 在knockout.js中使用checkall或uncheckall的树视图
我使用以下代码在knockout.js中创建了一个包含多级数据的树Javascript 在knockout.js中使用checkall或uncheckall的树视图,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我使用以下代码在knockout.js中创建了一个包含多级数据的树 <ul data-bind="template: { name: 'itemTmpl', foreach: $data.items }"></ul> <script id="itemTmpl" type="text/html"> <li> <span data-bind="text: name"></span> &l
<ul data-bind="template: { name: 'itemTmpl', foreach: $data.items }"></ul>
<script id="itemTmpl" type="text/html">
<li>
<span data-bind="text: name"></span>
<input type='checkbox'>
<ul data-bind="template: { name: 'itemTmpl', foreach: $data.items }">
</ul>
</li>
</script>
但现在我想在敲除中扩展它,如果我选中父项,那么它的所有子项都被选中,如果取消选中父项,那么所有子项都被选中
这里是js fiddle链接
我制作了一个版本,它不改变原始数据,而是使用KO映射 我还利用Opertinity演示了使用我的约定库编写代码所需的工作量
MyApp.TreeViewModel = function(data) {
var mapping = {
items: {
create: function(options) {
return new MyApp.TreeViewModel(options.data);
}
}
};
this.checked = ko.observable(false);
this.checked.subscribe(this.onChecked, this);
this.items = ko.observableArray();
ko.mapping.fromJS(data, mapping, this);
};
MyApp.TreeViewModel.prototype = {
constructor: MyApp.TreeViewModel,
onChecked: function(checked) {
ko.utils.arrayForEach(this.items(), function(item) {
item.checked(checked);
});
}
};
- 用我的自由
- 没有
no-yet。。我还将我的数据粘贴到了JSFIDLE中。如果您希望对项目进行isChecked
,那么您可以使用根级别的单击
处理程序,在该处理程序中,您可以递归地选中或取消选中较低级别的项目。。。类似于:我刚刚发现一个问题,如果我检查了变形,然后从5天内取消检查,变形也应该取消检查。您可以使用创建函数中的options.parent将父项添加到子项,当取消选中子项时,取消选中父项,你是否可以编辑你的代码,因为我是新手。jsI只说你是KO冠军。