My Elm應用程序讓用戶旋轉圖片:當單擊屏幕上的圖片時,elm會進行API調用以旋轉服務器上的圖片文件。之後,我想旋轉的圖像顯示在瀏覽器中。img元素的強制重繪
但是虛擬DOM根本沒有改變,因爲img節點具有相同的src URL。有什麼辦法可以強制img被重新創建嗎?
當然,我可以使用Keyed節點或修改我的img上的某些屬性來強制重畫,但這意味着要在我的模型中添加一些在旋轉時修改的屬性。這是可能的,但不是很優雅。
My Elm應用程序讓用戶旋轉圖片:當單擊屏幕上的圖片時,elm會進行API調用以旋轉服務器上的圖片文件。之後,我想旋轉的圖像顯示在瀏覽器中。img元素的強制重繪
但是虛擬DOM根本沒有改變,因爲img節點具有相同的src URL。有什麼辦法可以強制img被重新創建嗎?
當然,我可以使用Keyed節點或修改我的img上的某些屬性來強制重畫,但這意味着要在我的模型中添加一些在旋轉時修改的屬性。這是可能的,但不是很優雅。
你想要東西要在旋轉上修改:即圖像。所以當你想旋轉發生的時候,你將會在你的模型中有一個改變。我希望API的響應可以在模型中增加一個計數器(或通過Time.now使用當前時間),然後使用基於該值的緩存清除查詢參數更新圖像URL。有關緩存清除查詢參數的更多細節在這裏:Cache busting via params
謝謝大家。我就是這麼做的。帶查詢字符串參數中的時間戳。兩者都會更改模型並「緩衝」緩存。 – UnluckyPaladin
我認爲你基本上是正確的,所以問題變成了什麼樣的狀態來添加。也許最合適的是與http請求狀態相關的東西,因爲您可能還希望其他效果讓用戶知道正在進行的更改 –
似乎讓原始版本和旋轉版本共享相同的URI是一種很好的方式來獲取受到許多層面的緩存沮喪,而不僅僅是DOM /瀏覽器。我建議使用查詢參數作爲區別。 –