如何确定选中的行

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);
    }
});