0

CHANNELS、WIDGETS という 2 つの値を持つ t:select があります。最初のものを選択すると、すべてのチャネルを含むパレットが表示され、ウィジェット パレットが非表示になります (両方ともゾーン内)。2 番目のものを選択すると、チャネル パレット ゾーンが非表示になり、ウィジェット パレット ゾーンが表示されます。両方のパレットは、データベースから読み込まれたアイテムで事前に選択されています。selectedWidgets と selectedChannels の両方に @Persist という注釈が付けられます。問題は、顧客が選択したウィジェットを削除してから、チャネルに切り替えてそれらを追加したいということです。つまり、2 つの操作です。その後保存すると、削除されたウィジェットはそのまま残り、チャネルは正しく追加されます。これで解決できるのでしょうか?

4

2 に答える 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 に答える