14

ノックアウト js を使用して $index を使用してテキストをバインドしようとすると、数値ではなく関数のコードが取得されるのはなぜですか?

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

1、2、3 などを取得する代わりに、次のようになります。

ここに画像の説明を入力

上の画像の最後の文字で、0 のインデックスが 1 に追加されていることがわかります。バインドから「+ 1」を削除すると、関数の代わりに 0、1、2 が得られます。

式を評価するようにノックアウトに指示するにはどうすればよいですか? フォームを送信するときに同じ問題があります。文字列フィールドが値ではなく関数として送信されています。

4

2 に答える 2

32

$index はオブザーバブルであり、関数です。試す<span data-bind="text: $index() + 1"></span>

于 2012-07-02T23:11:41.160 に答える
4

使用する場合

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

たとえば、インデックス値が 2 の場合、スパンのテキストは 3 ではなく 21 になります。

次のように、viewModel で関数を定義する必要があります。

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

そして、スパンで次のことを行う必要があります。

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

これが役立つことを願っています:)

于 2013-02-06T10:43:25.920 に答える