2013-03-11 8 views
13

私はこれを理解して脳を破っている。私はテンプレートを吐き出すforeachを持っています、そして、私は最初の要素が特別な属性を持つことを望みます。これまでのソリューションは私がhaventが見つかりました。knockoutjsテンプレートforeach、特別な最初のアイテム

これはforeachのである:

<h3 class="question">Geografi</h3> 
     <p class="answer" data-bind="template: { name: 'geographyTmpl', foreach: geographyList, templateOptions: { selections: selectedGeographies } }"></p> 

これはテンプレートです:

<script id="geographyTmpl" type="text/html"> 
<input class="geoCheckList" validate="required:true, minlength:2" name="geoCheckList[]" type="checkbox" data-bind='value: $data, attr: { id: "Geo"+$index()},checked: $root.selectedGeographies' /> 
<label data-bind="text: $data, attr: { 'for': 'Geo'+$index()}"></label> 

と私は追加したい: "検証は=" 必要な:真、MINLENGTH:2" を

何をする必要がありますか?

jQueryの検証に役立ちます。

答えて

30

もご協力いただき、ありがとうございます:)私はすでに、適切な答えを発見した、しかし、私はこれを救うKnockoutJS foreach

Skip item in foreach knockout js array?

<div data-bind="text: ItemsArray[0].someProperty"></div> 
<div data-bind="foreach: ItemsArray"> 
<!-- ko if: $index() == 0 --> 
    <div data-bind="text: someProperty"></div> 
<!-- /ko --> 
<!-- ko if: $index() != 0 --> 
    <div data-bind="text: anotherDifferentProperty"></div>  
<!-- /ko --> 
</div> 
+0

ありがとうございました!私はまだバリデーションに問題がありますが、少なくとも私は特別な最初のアイテムを持つことができます。 –

+0

それでは、それも修正されました。おかげで再び:) –

+0

あなたはようこそ.... –

0

計算されたオブザーバブルを使用してブール値を返すことができます。ブール値がtrueの場合、属性(標準ノックアウト)を表示できますか?このような

何かが多分

this.IsFirst = ko.computed(function() { 
    return this == Array[0]; 
}, this); 

それは、私はむしろテンプレートよりもcustom bindingを使用するように誘惑して、取得されると思いハックようだが、

を仕事や

{{if $item.first === $data}} 
+0

の最初の要素について別の質問のための私の答えをチェック今後の参考のために。 –

0

を使用する必要がありますbindingContextの$インデックスをオフにし、$ indexが0の場合にのみvalidate属性を追加します。

ko.bindingHandlers.yourBindingName = { 
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { 
     // Create your input and label elements here then 
     $(element).append(// add your new elements in here); 
    } 
}; 
+0

あなたの貢献に感謝します:)私はすでに適切な答えを見つけましたが、将来の参考のためにこれを保存します。 –

関連する問題