2017-11-11 68 views
2

My Elm应用程序让用户旋转图片:当单击屏幕上的图片时,elm会进行API调用以旋转服务器上的图片文件。之后,我想旋转的图像显示在浏览器中。img元素的强制重绘

但是虚拟DOM根本没有改变,因为img节点具有相同的src URL。有什么办法可以强制img被重新创建吗?

当然,我可以使用Keyed节点或修改我的img上的某些属性来强制重画,但这意味着要在我的模型中添加一些在旋转时修改的属性。这是可能的,但不是很优雅。

+1

我认为你基本上是正确的,所以问题变成了什么样的状态来添加。也许最合适的是与http请求状态相关的东西,因为您可能还希望其他效果让用户知道正在进行的更改 –

+2

似乎让原始版本和旋转版本共享相同的URI是一种很好的方式来获取受到许多层面的缓存沮丧,而不仅仅是DOM /浏览器。我建议使用查询参数作为区别。 –

回答

0

想要东西要在旋转上修改:即图像。所以当你想旋转发生的时候,你将会在你的模型中有一个改变。我希望API的响应可以在模型中增加一个计数器(或通过Time.now使用当前时间),然后使用基于该值的缓存清除查询参数更新图像URL。有关缓存清除查询参数的更多细节在这里:Cache busting via params

+0

谢谢大家。我就是这么做的。带查询字符串参数中的时间戳。两者都会更改模型并“缓冲”缓存。 – UnluckyPaladin