2013-03-02 17 views
6

Knockout-2.2.0.js kullanıyorum. ObsableArray üzerinde bir foreach döngüsünü oluşturdum ve dizide yalnızca ilk elemanı göstermek istiyorum. Bunun için denedim: (çalışmaz ikisi)Foreach döngü bağlayıcısında yalnızca ilk öğe nasıl gösterilir?

İlk

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

İkinci

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

O unsur olacaktır dışında herhangi dizi öğesi üzerinde ayarlarsanız bir _destroy özellik olduğunu biliyoruz kullanıcı arayüzünde foreach döngüsünden hariç tutuldu. Ama bunu benim durumumda kullanmak istemiyorum. Herkes bana burada neyi yanlış yaptığımı söyler mi?

+0

Foreach yapmayı ve "span-data-bind =" text: myArray() [0] gibi bir şey yapamazsınız, görünür: true ">" –

+0

myArray gözlenebilirse, unutma Dizine erişmek için bir işlev gibi çağırmalısınız. Ayrıca, Chrome'da çalıştırıp konsolu kontrol ettiniz mi (f12)? Size ne gibi bir hata veriyor? –

cevap

15

Doğru yoldasınız. Ancak her iki örneğinizde de ()'u çıkarmayı unuttunuz.

myArray gözlemlenebilir bir dizi ve $index, ifadelerden içinde kendi değerlerini almak için () ile fonksiyonları olarak aramak gerekiyor böylece işlevleri vardır yani gözlemlenebilir.

Yani doğru bağlantıları şunlardır:

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

Ve

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

Demo JSFiddle.

Not: Yalnızca ilk öğeyi görüntülemek istiyorsanız, text: myArray()[0] sürümünü tercih etmelisiniz, çünkü ne yapmaya çalıştığınız orada daha temizdir.