私は特定のコードを探しているのではなく、次の状況に対処するための全体的なアプローチを探しています:ユーザーは、クリックしてドラッグすることで、新しい div でラップされたテキストを作成できます (テキスト ノードと呼びましょう)。ユーザーが変更したDOMの状態をどうにかして保存したい。
JSBin サンプルをチェックして、私の言いたいことを正確に確認してください。
コードは私の Ember プロジェクトから抽出されたものですが、これが何をするかです:
- Click to editエリアは単なる Ember ビューです
- ワークスペースにドラッグすると、[クリックして編集] が複製され、すべての Ember バインディングが失われます (これはまったく問題ありません)。
したがって、ユーザーが 1 つまたは複数のテキスト ノードをワークスペースに追加すると、次のようになります。
<div class="workspace">
<div class="text" style="top: 86px; left: 141px;">Text Node 1</div>
<div class="text" style="top: 99px; left: 100px;">Text Node 2</div>
<div class="text" style="top: 10px; left: 44px;">Text Node 3</div>
</div>
tl;dr (すでに **cking の質問にアクセスしてください)
別のページでユーザーの変更を忠実に再現できるようにするには、この情報をどのように保存すればよいでしょうか?
いくつかのアイデア
- ルート変更時に、
.text
クラスを使用してすべての DOM 要素をループし、DOM テキストとスタイル属性を格納するオブジェクトを作成しますか? 次に、オブジェクトをループ処理し、特定のページでそれらの DOM 要素を再作成する「ビルド」タイプの関数を作成する必要があります。 - ルートの変更時に、すべての DOM 要素をループし、それぞれを jQuery オブジェクトとして配列に保存します。「再構築」は、配列内の各項目をループして DOM に追加するだけの問題です。
最後に、どう思いますか?アイデア、批判、過去の経験は大歓迎です。