CHANNELS、WIDGETS という 2 つの値を持つ t:select があります。最初のものを選択すると、すべてのチャネルを含むパレットが表示され、ウィジェット パレットが非表示になります (両方ともゾーン内)。2 番目のものを選択すると、チャネル パレット ゾーンが非表示になり、ウィジェット パレット ゾーンが表示されます。両方のパレットは、データベースから読み込まれたアイテムで事前に選択されています。selectedWidgets と selectedChannels の両方に @Persist という注釈が付けられます。問題は、顧客が選択したウィジェットを削除してから、チャネルに切り替えてそれらを追加したいということです。つまり、2 つの操作です。その後保存すると、削除されたウィジェットはそのまま残り、チャネルは正しく追加されます。これで解決できるのでしょうか?
質問する
441 次
2 に答える
1
私の理解が正しければ、フォーム送信時に両方のパレットの値を保存する必要があります。したがって、両方のパレットがフォームに表示されます。
これを解決するには、1 つのパレットを非表示にして、選択値の変更時に別のパレットを表示します。サーバー側の操作は必要ありません (ゾーンも必要ありません)。
<t:select t:id="select" .../>
<t:palette id="widgets" .../>
<t:palette id="channels" .../>
そしてjqueryを使用するjs:
var $select = $('#' + selectId);
var $widgets = $('#' + widgetsId);
var $channels = $('#' + channelsId);
$select.on('change', function() {
if ($select.val() == 1 /* or another value corespondent to channels */) {
$widgets.hide();
$channels.show();
} else {
$widgets.show();
$channels.hide();
}
});
于 2013-07-11T12:45:06.083 に答える
0
sody のおかげで、なんとかこの問題を解決できました。最初の主要部分は、ゾーンを取り除くことでした。コンポーネントを含むフォームを作成し、すべてを 1 回送信するだけでした。2 番目の主要部分は、適切なタイミングで sody によって言及された JavaScript をトリガーすることでした。時間があれば、tml、java、および javascript コードを貼り付けます。誰かがクリーンアップを手伝ってくれると確信しています。
于 2013-07-14T22:30:07.010 に答える