2013-06-12 7 views
68

nasıl bağlamaları ile/iç içe Nakavt foreachta $ veli $ ebeveyn başvurabilir kısalık için Güncelleme?

Örnek -

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> // <-- Doesn't work 
       <!-- ko foreach: children --> 
        <td data-bind="if: favToy().name == $parent.$parent.favToy().name"> 
         <span data-bind="text: favToy().name"></span> 
        </td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

Orjinal

kafa karıştırıcı soru için üzgünüm ama (aşağıda) gibi geçerli bağlamda bir değere karşı kontrol etmek için ikinci düzey ebeveynin değerine ulaşmak için çalışıyorum için başlarına $ ebeveynin $ ebeveynin değerle eşleşen yalnızca bir yayılma gösterir (ugh!)

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> 
       <!-- ko foreach: children --> 
        <td data-bind="if: favToy().name == $parent.$parent.favToy().name"> 
         <span data-bind="text: favToy().name"></span> 
        </td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

o bunu şu w yapmak kolay olurdu ay ama ne okudum bu mümkün değilse veya ben yanlış :)

<!-- ko foreach: grandParent --> 
     <tr> 
      <!-- ko foreach: $parent.parents --> 
       <!-- ko foreach: children ? favToy().name == $parent.$parent.favToy().name --> 
        <td data-bind="text: favToy().name"></td> 
       <!-- /ko --> 
      <!-- /ko --> 
     </tr> 
    <!-- /ko --> 

Herhangi bir yardım

büyük takdir yapıyorum.

+0

, ne çalışmıyor gibi birçok kullanışlı özellikleri sağlar? Probleminiz nedir: '$ parent. $ Parent 'sözdizimi veya' span 'kullanmanız gerekir çünkü foreach' ve 'if' ile birleşemezsiniz? – nemesv

cevap

118

$parents dizisini kullanın, büyük ebeveyn $parents[1] olur. Örneğinizdeki grandParent nesnesinin en üstteki üst öğesi ise $root'u da kullanabilirsiniz. docs kaynaktan

:

$ anne

Bu üst görünüşüdür modelleri her temsil eden bir dizi:

$ anne [0] ebeveynden görünüşüdür modelidir bağlam (yani,

bağlamında ( ) $ ebeveynleri [1] dümen görünüm modelidir bağlam öyle

$ ebeveynler [2] vb görünüm harika-büyükbaba bağlamında

gelen modeli ... ve olduğunu.

Bu kök olarak ana görünüşüdür modeli objesi, yani, üstteki üst bağlam $ kökü. Genellikle ko.applyBindings'e iletilen nesne. Bu $ ebeveynlere eşdeğer [$ parents.length - 1].

+0

Bazı nedenlerden dolayı "$ parent. $ Parent" benim için işe yaramadı, ancak bu çözüm işe yaramadı ve daha da kısa! – PeterM

3

$parentContext.$parent'u kullanabilirsiniz.

$parentContext böyle ($data, $parent, $index, ...)

Sorunuzu anlamıyorum