Knockout.js 绑定敲除foreach时的表行号

Knockout.js 绑定敲除foreach时的表行号,knockout.js,Knockout.js,我有一个带有标题、用户名、用户名的表,当用户从复选框列表中选择用户名时,我正在执行一个淘汰foreach循环来添加行。这是我的 HTML 当用户选择用户1和3时,问题就出现了,$index+1对行号不起作用 我需要一种动态设置行号的方法 提前感谢。我将创建一个计算的可观察对象,在那里我进行过滤。然后,$索引将提供正确的行号: 因此,将新属性selectedUsers添加到myViewModel: 然后在表中绑定到它: <tbody data-bind="foreach: selectedU

我有一个带有标题、用户名、用户名的表,当用户从复选框列表中选择用户名时,我正在执行一个淘汰foreach循环来添加行。这是我的

HTML

当用户选择用户1和3时,问题就出现了,$index+1对行号不起作用

我需要一种动态设置行号的方法


提前感谢。

我将创建一个计算的可观察对象,在那里我进行过滤。然后,$索引将提供正确的行号:

因此,将新属性selectedUsers添加到myViewModel:

然后在表中绑定到它:

<tbody data-bind="foreach: selectedUsers">
        <tr>
            <!-- The table row number -->
            <td data-bind="text: $index() + 1"></td>
            <td data-bind="text: username"></td>
            <td data-bind="text: usersurname"></td>
        </tr>
</tbody>

演示。

到底什么不起作用?对我来说似乎很好。我想要的行号不是数组序列的索引,但是如果我选择行1和3,我会在表中看到行1和3,在列中有正确的索引。到底出了什么问题?如果我选择1和3,我希望它显示1和2,我希望将$index替换为表$parent.users.indexOf$data中的行数,作为单击函数中的参数。。这将动态返回index.Thanx。这就是我想要的好办法。每当我发现自己在HTML绑定中执行排序/过滤逻辑时,我都会使用这种方法。
var myViewModel = {
     users: ko.observableArray([{
         username: 'Name 1',
         usersurname: 'Surname 1',
         userselected: ko.observable(false)
     }, {
         username: 'Name 2',
         usersurname: 'Surname 2',
         userselected: ko.observable(false)
     }, {
         username: 'Name 3',
         usersurname: 'Surname 3',
         userselected: ko.observable(false)
     }])
 };

 $(document).ready(function () {
     //Bind View model
     ko.applyBindings(myViewModel);
 });
myViewModel.selectedUsers = ko.computed(function () {
     return ko.utils.arrayFilter(myViewModel.users(), function (item) {
         return item.userselected();
     });
 });
<tbody data-bind="foreach: selectedUsers">
        <tr>
            <!-- The table row number -->
            <td data-bind="text: $index() + 1"></td>
            <td data-bind="text: username"></td>
            <td data-bind="text: usersurname"></td>
        </tr>
</tbody>