2

foreachselectの次のKnockoutJS :

<select "foreach: ControllersAndActions">
   <optgroup data-bind="attr: {label: $data.ControllerName}, foreach: Actions">
       <option data-bind="text: $data"></option>
   </optgroup>
</select> 

次のようにスタイル設定されたオプションツリーをレンダリングします。

<optgroup label="NFC EAST">
     <option>Dallas Cowboys</option>
<optgroup>
<optgroup label="NFC NORTH">
     <option>Chicago Bears</option>
</optgroup>

次のように、グループが開始する前に最初の空のオプションも挿入することを除いて、それを行う必要があります。

<option value=""></option>
<optgroup label="NFC EAST">
     <option>Dallas Cowboys</option>
<optgroup>

foreachループが繰り返されるたびに「再レンダリング」されない単一のアイテムを注入するにはどうすればよいですか?

4

1 に答える 1

2

「foreachoneleveldeeper」を追加して(たとえば、コンテナーレス制御フロー構文を使用して)、空の要素を手動で追加する代わりforeachに、要素にバインディングを配置しないでください。select

<select>
   <option value=""></option>
   <!-- ko foreach: ControllersAndActions -->
   <optgroup data-bind="attr: {label: ControllerName}, foreach: Actions">
       <option data-bind="text: $data"></option>
   </optgroup>
   <!-- /ko -->
</select> ​​​​​​​​​​​​​​​​

このJSFiddleで実際の動作を確認できます。

于 2012-10-21T15:55:44.330 に答える