2013-03-02 4 views
6

私はknockout-2.2.0.jsを使用しています。 observableArrayでforeachループバインディングを作成しました。配列の最初の要素のみを表示します。このために私が試した:(両方とも動作しない)foreachループバインディングの最初の要素のみを表示する方法はありますか?

まず

 <!-- ko foreach: myArray --> 
      <span data-bind="text: $data, visible: $index == 0"></span> 
     <!-- /ko --> 

セカンド

 <span data-bind="text: myArray[0]"></span>  

私はその要素がされるよりも、任意の配列要素に設定されている場合_destroyプロパティがあることを知っていますUIのforeachループバインディングから除外されます。しかし私は私の場合にこれを使いたくない。誰でも私がここで間違っていることを教えてもらえますか?

+0

あなたはforeachをやるのを避け、 '

+0

myArrayが観測可能ならば、忘れないでくださいインデックスにアクセスする関数のように呼び出す必要があります。また、Chromeで実行してコンソール(f12)を確認しましたか?あなたに何のエラーがありますか? –

答えて

15

あなたは正しい方向にあります。しかし、両方の例で()を出すことを忘れてしまった。

myArray観測可能な配列であり、$indexは観測可能なので関数なので()の関数として呼び出す必要があります。

だから、正しいバインディングは、以下のとおりです。

<!-- ko foreach: myArray --> 
    <span data-bind="text: $data, visible: $index() == 0"></span> 
<!-- /ko --> 

そして

<span data-bind="text: myArray()[0]"></span> 

デモJSFiddle

注:実際に最初の項目を表示したい場合は、何をしようとしているかがはっきりしているので、text: myArray()[0]の方が好きです。

関連する問題