5

サブセクションが折りたたまれたり展開されたりして表示される om ベースのフォームを作成しています。ビューの状態は、サブセクションのローカル状態に保存されます。

(defn subsection-view [サブセクション所有者]
  (具体化する
     om/IInitState
     (初期状態 [これ]
        {:折りたたまれた真}))

問題は、各サブセクションのビュー ステータスが、すべてを折りたたむボタンまたはサブセクションごとに表示される個別のボタンのいずれかによって、両方の方法で影響を受ける可能性があることです。

expand-compress-all を処理するために、フォームのローカル状態に保存されたグローバルな折りたたみステータスがあります。

(defn form-view [データ所有者]
  (具体化する
    om/IInitState
    (初期状態 [これ]
       {:all-collapsed true})))

明らかに、両方のボタンon-clickイベントは、ローカル状態で折りたたみステータスを更新することによって処理されます。

(om/update-state! owner :collapsed not)

私の質問は、正しいビューを表示するために、どのステータスが最後に更新されたかをどのように知る必要があるかということです.

または、コンポーネント ツリーのさまざまなレベルのさまざまなトリガーから影響を受ける可能性のある折りたたみ状態を保存する適切な場所(ローカル状態またはアプリケーション状態) はどこですか?

4

2 に答える 2

2

私は core.async のファンであり、チャネルを使用して実装します。セクションに折りたたみ/展開メッセージをリッスンさせ、それが来るとローカル状態を変更します。ローカルの状態が変化すると、再描画が発生します。1 つのセクションを展開すると、そのセクションのローカル状態のみが更新されます。

于 2015-02-26T21:41:35.633 に答える