1

KnockoutJS を使用して JSON をレンダリングしています。特定の結果には複数の「アプリケーション」があります。常に 1 だけを返すように foreach で作成することは可能ですか? どっちが先か。

以下の例では、TEST1 は Applications の下に 2 つの結果を持っています。レンダリングで1つだけ表示したいと思います。

HTML

<table>
<thead>
<tr>
<th>AppId</th>
<th>Name</th>
<th>App Token</th>

</tr>
</thead>
<tbody data-bind="foreach: { data: APPS, as: 'APP' }">
  <tr data-bind="foreach:  Applications">
    <td><span data-bind="text: appId"></span></td>
    <td><span data-bind="text: $parent.name"></span></td>
    <td><span data-bind="text: AppToken"></span>
  </tr>
</tbody>
</table>

JSON

{
   "APPS":{
      "bad":{
         "Name":"TEST1",
         "Applications":[
            {
               "AppId":"bab",
               "AppToken":null
            },
            {
               "AppId":"bab",
               "AppToken":null
            }
         ]
      },
      "good":{
         "Name":"TEST2",
         "Applications":[
            {
               "AppId":"bab",
               "AppToken":null
            }
         ]
      }
   }
}
4

2 に答える 2

4

APPS は配列ではないため、ループすることはできません。アプリケーションは、それをループできます。ただし、これを最初の項目にしたいので、APPS とアプリケーションの両方に With binding を使用してください。

また、HTML のバインドの大文字と小文字を修正します。また、Applications 配列は「Apps」の「良い」または「悪い」プロパティから外れているため、そのように修飾する必要があります。

これは同じフィドルです。

http://jsfiddle.net/sujesharukil/tyJwX/1

<tbody data-bind="with: APPS.bad">
    <tr data-bind="with:  Applications[0]">
        <td><span data-bind="text: AppId"></span></td>
        <td><span data-bind="text: $parent.Name"></span></td>
        <td><span data-bind="text: AppToken"></span></td>
  </tr>
</tbody>
于 2013-03-15T18:29:37.043 に答える
0

さて、私は使用しました:

<!-- ko if: $index() === 0 -->

ここから答えを得ました。 ifバインディングで$indexを使用するknockout.js

于 2013-03-15T18:38:35.687 に答える