Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elm img元素的强制重画_Elm_Virtual Dom - Fatal编程技术网

Elm img元素的强制重画

Elm img元素的强制重画,elm,virtual-dom,Elm,Virtual Dom,我的Elm应用程序允许用户旋转图片:单击屏幕上的图片时,Elm会调用API来旋转服务器上的图片文件。接下来,我希望旋转后的图像显示在浏览器中 但是虚拟DOM根本没有改变,因为img节点具有相同的src URL。有没有办法强制重新创建img 当然,我可以使用设置关键帧的节点或修改img上的某些属性来强制重画,但这将意味着向我的模型添加一些在旋转时修改的内容。这是可能的,但不是很优雅。您希望在旋转时修改某些内容:即图像。因此,当您希望旋转发生时,您将在模型中进行更改。我会让API的响应在模型中增加一

我的Elm应用程序允许用户旋转图片:单击屏幕上的图片时,Elm会调用API来旋转服务器上的图片文件。接下来,我希望旋转后的图像显示在浏览器中

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


当然,我可以使用设置关键帧的节点或修改img上的某些属性来强制重画,但这将意味着向我的模型添加一些在旋转时修改的内容。这是可能的,但不是很优雅。

您希望在旋转时修改某些内容:即图像。因此,当您希望旋转发生时,您将在模型中进行更改。我会让API的响应在模型中增加一个计数器(或者使用当前时间via),然后根据该值使用缓存破坏查询参数更新图像URL。关于缓存破坏查询参数的更多详细信息如下:

我认为您基本上是正确的,因此问题变成了要添加哪种状态。也许最合适的是与http请求状态相关的内容,因为您可能还需要其他效果来让用户知道正在进行的更改,例如让原始版本和旋转版本共享相同的URI,这是一种很好的方法,可以通过在多个级别(而不仅仅是DOM/浏览器)缓存而受挫。我建议使用查询参数作为区分标准。谢谢大家。我就是这样做的。在查询字符串参数中使用时间戳。两者都会更改模型并“破坏”缓存。