0

私はこのテンプレートを持っています

<!--ko template: { name: 'multiCheckBtn', data: { elems: posGenders, compareWith: gender, switch: switchCheckBtn} }-->
<!--/ko-->

<script id="multiCheckBtn" type="text/html">
  <span class="fakeCheck" data-bind="foreach: { data: $data.elems, as: 't' } ">
    // here $data becomes alias to t and I don't how to access other params, like $data.switch
    <span class="btn" data-bind="text: t, css: { selected: t == $data.compareWith() }, click: $data.switch } "></span>
  </span>
</script>

私が欲しいのは、最初にテンプレートに渡された変数へのforeachアクセスを取得することcompareWithですswitchが、前にしかアクセスできませんforeach。ループ内の$data変数が のエイリアスになりt、他の変数にアクセスできなくなります。

foreachでアクセスしようとしているようにデータにアクセスできるように、データをループに渡す方法はありますか?

4

1 に答える 1

1

$parentオブジェクトを使用してアクセスできます。

<script id="multiCheckBtn" type="text/html">
  <span class="fakeCheck" data-bind="foreach: { data: $data.elems, as: 't' } ">
    <span class="btn" data-bind="text: t, css: { selected: t == $parent.compareWith() }, click: $parent.switch } "></span>
  </span>
</script>

ここにフィドルが働いています:http://jsfiddle.net/vyshniakov/nVsgK/

于 2013-01-22T11:05:45.840 に答える