如何确定选中的行
How to determine the selected row
我有一个 table 这样的绑定:
<tbody data-bind="foreach: reportItems">
<tr>
<td><a data-bind="text: OrderPostCloseStatusName" data-toggle="modal" data-target="#editStatus"></a></td>
</tr>
</tbody>
单击 link 时,这会起作用并显示 Bootstrap 模型。但是,我需要知道单击了哪个项目,以便我可以在模型中显示适当的数据。例如,我想要 ViewModel 上的一个名为 selectedItemId 的 属性,它将以某种方式绑定,以便 viewModel 在用户单击 link 时知道选择了哪个项目。
我该怎么做?
格雷格
在您的视图模型中创建一个新的可观察对象:
self.selectedItem = ko.observable();
添加一个click binding到link:
<td><a data-bind="text: OrderPostCloseStatusName, click: $root.selectedItem" data-toggle="modal" data-target="#editStatus"></a></td>
现在,如果您想要一个具有所选 ID 的可观察对象,您可以创建一个计算对象:
self.selectedItemId = ko.computed(function() {
var selectedItem = ko.unwrap(self.selectedItem);
if (selectedItem) {
return ko.unwrap(selectedItem.id);
}
});
我有一个 table 这样的绑定:
<tbody data-bind="foreach: reportItems">
<tr>
<td><a data-bind="text: OrderPostCloseStatusName" data-toggle="modal" data-target="#editStatus"></a></td>
</tr>
</tbody>
单击 link 时,这会起作用并显示 Bootstrap 模型。但是,我需要知道单击了哪个项目,以便我可以在模型中显示适当的数据。例如,我想要 ViewModel 上的一个名为 selectedItemId 的 属性,它将以某种方式绑定,以便 viewModel 在用户单击 link 时知道选择了哪个项目。
我该怎么做?
格雷格
在您的视图模型中创建一个新的可观察对象:
self.selectedItem = ko.observable();
添加一个click binding到link:
<td><a data-bind="text: OrderPostCloseStatusName, click: $root.selectedItem" data-toggle="modal" data-target="#editStatus"></a></td>
现在,如果您想要一个具有所选 ID 的可观察对象,您可以创建一个计算对象:
self.selectedItemId = ko.computed(function() {
var selectedItem = ko.unwrap(self.selectedItem);
if (selectedItem) {
return ko.unwrap(selectedItem.id);
}
});