13

だから私はこれを理解しようと頭を悩ませてきました。テンプレートを吐き出す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>

そして、最初の要素に "validate="required:true, minlength:2" を追加したいと思います。

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

それが役立つ場合は、jQuery 検証用です。

4

4 に答える 4

33

KnockoutJS の最初の要素に関する別の質問については、私の回答を確認してくださいforeach

foreachノックアウトjs配列のアイテムをスキップしますか?

<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>
于 2013-03-11T13:48:59.870 に答える
0

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

このようなものかもしれません

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

ハッキーに見えますが、動作するはずです

または使用

   {{if $item.first === $data}}
于 2013-03-11T13:48:42.763 に答える
0

テンプレートではなくカスタム バインディングを使用してから、bindingContext から $index を取得し、$index が 0 の場合にのみ検証属性を追加したくなるでしょう。

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);
    }
};
于 2013-03-11T13:48:53.083 に答える
0

インデックスから括弧を外す限り、以前の投稿は機能します。

次のように

<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>

于 2019-12-04T20:44:23.607 に答える