4

Ext JS 4 を使用して単純な管理者 UI を作成しています。Sencha の Web サイトのこの例から始めました。フォームにチェック ボックス グループ (4 つのオプション) を追加し、フォームの下のグリッドで選択したレコードに基づいてボックスを動的にチェックします。すべて正常に動作していますが、データをサーバーに送信すると、チェック ボックス グループからのデータの形式が、クリックされたボタンによって異なります。

たとえば、レコードを編集して保存ボタンをクリックすると、Ext JS はチェック ボックスのチェック状態に対応する真/偽の値を持つ配列を送信します。

{"available": [true, true, false, false]}

まったく新しいレコードを作成して追加ボタンをクリックすると、Ext JS はチェックされたチェック ボックスの名前を含む配列を送信します。

{"available": ["Selection_1", "Selection_2", "Selection_3"]}

最後に、新しいレコードを作成して追加ボタンをクリックし、チェック ボックスを 1 つだけオンにすると、Ext JS は単一の文字列値を送信します (2 番目の例で送信した配列とは対照的です)。

{available": "Selection_1"}

Ext JS がこれを行うのはなぜですか? これにより、サーバー側でのデータの取り扱いが困難になります。さらに、保存ボタンがデータをサーバーに送信する方法をオーバーライドして、追加ボタンが送信するのと同じ形式で送信する方法はありますか? ありがとうございました!

4

1 に答える 1

2

allowSingle:false を使用して、すべての書き込み操作がレコード数に関係なくレコードの配列を送信するようにすることができます。API ドキュメントは次のとおりです: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.writer.Json-cfg-allowSingle

送信されている値に関する限り。ここで正確に何が起こるかははっきりしていませんが、この関数を調べてみてください: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.CheckboxGroup-method- getSubmitData

編集: 別の注意 - チェックボックスは、inputValueを使用して、フォームの送信時に何を送信するかを決定します。このプロパティの設定を確認してください。

于 2012-10-30T21:41:25.917 に答える