【发布时间】:2021-08-27 17:22:38
【问题描述】:
我是淘汰赛的新手,并试图实现一个表,其中第一列作为复选框。当我单击标题时,应选中/取消选中整个列。目前,当我单击表格行(所有行都被选中/未选中)但不在表格标题上时,它可以工作。请让我知道我的代码有什么问题!这是我的部分代码:
<table>
<tr>
<th><input type="checkbox" data-bind="click: selectAll"></th>
<th>Notes</th>
</tr>
<tbody data-bind="foreach: DocumentRows">
<tr>
<td><input type="checkbox" data-bind="checked: $parent.IsSelected"></td>
<td><data-bind="text: Notes"></td>
</tr>
</tbody>
</table>
// Script.ts
```
define(['knockout', 'jquery', 'text!./Template'], (ko, $, htmlString) => {
//Document
class Document {
Id: KnockoutObservable<number>;
Notes: KnockoutObservable<string>;
constructor(data?) {
this.Id = ko.observable(0);
this.Notes = ko.observable("").extend({ defaultValue: "" });
if (data != null) {
ko.mapping.fromJS(data, {}, this);
}
}
};
//DocumentS VIEW MODEL
class DocumentsViewModel {
DocumentRows: KnockoutObservableArray<Document>;
IsSelected: KnockoutObservable<boolean>;
constructor(params) {
this.DocumentRows = ko.observableArray([]);
this.IsSelected = ko.observable(false);//
this.InitComputed();
this.Load();
}
InitComputed = () => {
selectAll = (Document: DocumentsViewModel) => {
var doc = Document.DocumentRows;
ko.utils.arrayForEach(doc(), function (item) {
item.IsSelected(true);
});
}
Load = () => {
DocumentsApiService.GetDocumentList(this);
}
}
//API SERVICE
class DocumentsApiService {
static GetDocumentList = (model: DocumentsViewModel) => {
$.ajax({
url: buildUrl(model.LoadListURL, { 'id': model.ObjectId(), 'additionalId': model.AdditionalId() }),
type: 'POST',
data: ko.mapping.toJSON(model.Filter),
contentType: 'application/json; charset=utf-8'
}).done(allData => {
var mapped = ko.mapping.fromJS(allData, DocumentsMapping);
model.DocumentRows(mapped.DocumentRows());
model.Filter.TotalCount(mapped.TotalCount());
model.Filter.PageIndex(mapped.Filter.PageIndex());
CalcCountTableStatus(model.Filter.PageIndex(), model.Filter.PageSize(), model.Filter.TotalCount(), 'documents-count-status-line');
}).fail(data => {
TSCore.OnFailure(data);
});
}
}
return { viewModel: DocumentsViewModel, template: htmlString }
});
```
【问题讨论】:
标签: foreach knockout.js