javascript - 淘汰赛:表选择取消选择行。取消选择行的问题/挑战
问题描述
我有一个表格Knockout
用来填写数据和选择行。现在的挑战是我可以选择行并且我可以看到它的详细信息。但是,当我单击分页或任何特定搜索框时,我希望取消选择行。
这是小提琴,它将解释更多
下面是 HTML 页面的模型代码
var RowModel = function(id, name, status) {
this.ID = ko.observable(id);
this.Name = ko.observable(name);
this.Status = ko.observable(status);
};
RowModel.fromRawDataPoint = function(dataPoint) {
return new RowModel(dataPoint.id, dataPoint.name, dataPoint.status);
};
解决方案
从小提琴中,我可以看到您正在通过调用self.selected(null)
and来实现取消选择self.enableEdit(false)
。
因此,只要页面更改或搜索完成,您就可以简单地再次调用它们。
self.deselect = function(){
self.selected(null);
self.enableEdit(false);
};
this.next = function() {
self.deselect();
if(self.pageNumber() < self.totalPages()) {
self.pageNumber(self.pageNumber() + 1);
}
}
this.lastpage = function() {
self.deselect();
if(self.pageNumber() < self.totalPages()) {
self.pageNumber(self.totalPages());
}
}
this.firstpage = function() {
self.deselect();
if(self.pageNumber() != 0) {
self.pageNumber(self.pageNumber()-self.pageNumber());
alert(self.pageNumber());
}
}
this.previous = function() {
self.deselect();
if(self.pageNumber() != 0) {
self.pageNumber(self.pageNumber() - 1);
}
}
编辑:在您对 ID、名称和状态没有更新的评论之后,我添加了 3 个新的observablesselectedName
和. 我在 HTML 中使用这些 observables,以便在更改时可以更新它们。这是通过使用函数来完成的。selectedID
selectedStatus
selected
subscribe
selected
HTML
<input type="text" name="ID" data-bind="value: selectedID, enable: enableEdit" />
<br>Name :
<input type="text" name="Name" data-bind="value: selectedName, enable: enableEdit" />
<br>Status :
<input type="text" name="Status" data-bind="value: selectedStatus, enable: enableEdit" />
JS
self.selected = ko.observable(self.items()[0]);
self.selectedID=ko.observable(self.items()[0].ID());
self.selectedName=ko.observable(self.items()[0].Name());
self.selectedStatus=ko.observable(self.items()[0].Status());
self.selected.subscribe(function(newValue){
if (newValue === null){
self.selectedID(null);
self.selectedName(null);
self.selectedStatus(null);
return;
}
if (typeof newValue !== 'undefined'){
self.selectedID(newValue.ID());
self.selectedName(newValue.Name());
self.selectedStatus(newValue.Status());
}
});
推荐阅读
- java - Micronaut 安全 - 为 RSASignatureConfiguration 设置 PublicKey
- c - ReadFile 代码使用 Win32 API 从串口读取非常慢
- python - Ruby 中的 Bytes.fromhex 和 int_to_byte 实现
- python - 如何在 Pandas 数据框中选择由特定列中的 str 值确定的行范围,“每次出现此 str 值时,我都需要一个新切片”
- apache-spark - 使用 Spark 将数据帧存储到 HBase
- wpf - 通过 WPF 中的触发器在不同的控件上使用相同的 SVG 几何图形
- docker - 如何按存储库过滤 docker image prune?
- reactjs - VoiceOver 光标与键盘焦点
- python - 分布式处理 - AWS Sagemaker
- javascript - 在 Javascript 中使用 Joi 进行自定义验证