2017-11-11 25 views
2

My Elmアプリケーションを使用すると、ユーザーは画像を回転できます。画面上の画像をクリックすると、サーバー上の画像ファイルを回転するAPI呼び出しが行われます。それに続いて、回転した画像をブラウザに表示します。img要素の強制再描画

しかし、仮想DOMは、imgノードが同じsrc URLを持つため、まったく変更されません。とにかくimgを強制的に再作成する方法はありますか?

確かに、再描画を強制するためにキー付きノードを使用するか、imgの一部の属性を変更することができますが、これはモデルを回転して変更されたものを追加することを意味します。可能ですが、それほどエレガントではありません。

+1

基本的に正しいと思いますので、追加する状態はどのような種類になりますか。おそらく最も適しているのはhttpリクエストの状態に関するものです。変更を行ったことをユーザーに知らせる他のエフェクトが必要な場合もあります –

+2

元のバージョンと回転したバージョンが同じURIを共有しているようですDOM /ブラウザだけではなく、多くのレベルでキャッシングすることで挫折しました。私は、微分器としてクエリパラメータを使用することをお勧めします。 –

答えて

0

You 回転時に変更するもの、つまり画像。したがって、ローテーションを発生させたい時点でモデルに変更を加えることになります。私は、APIからの応答をモデル内のカウンタをインクリメント(または現在の時間をTime.nowで使用)し、その値に基づいてキャッシュの破棄クエリパラメータでイメージURLを更新します。キャッシュ無効化クエリパラメータの詳細については、こちらをご覧ください:Cache busting via params

+0

ありがとうございます。それが私のやり方です。クエリ文字列パラメータにタイムスタンプを付けます。どちらもモデルを変更し、キャッシュを「バスト」させます。 – UnluckyPaladin

関連する問題