Подтвердить что ты не робот

Нокаут не оценивает выражение при использовании $index в привязке

Почему это, когда я пытаюсь использовать knockout.js для привязки некоторого текста с помощью $index, я получаю код функции вместо числа?

<tbody  data-bind="foreach: MyList">
  <tr>
    <td><span data-bind="text: $index + 1"></span></td>
  </tr>
</tbody>

Вместо получения 1, 2, 3 и т.д. я получаю следующее:

enter image description here

Вы можете видеть по последнему символу в приведенном выше изображении, что мой индекс нуля добавляется к 1. Если я удалю '+ 1' из моего привязки, я получаю 0, 1, 2 вместо функции.

Как сообщить нокауту, чтобы оценить выражение? У меня такая же проблема, когда я отправляю форму. Мои строковые поля передаются как функция вместо значения.

4b9b3361

Ответ 1

$index является наблюдаемым, что является функцией. Попробуйте <span data-bind="text: $index() + 1"></span>

Ответ 2

Если вы используете

<span data-bind="text: $index() + 1"></span> 

и, например, ваше значение индекса равно 2, текст вашего диапазона будет: 21, а не 3.

вы должны определить функцию в вашем представленииMode, например:

self.itemNumber = function(index) {
    return index + 1;
}

а затем в вашем диапазоне вы должны сделать:

<span data-bind="text: $root.itemNumber($index())"></span>

Надеюсь, это поможет:)