如何在指令中重新加载CSS背景图像

金属获奖者

在Angular中,我有加载背景图像属性的指令。如何获取背景图片以按需重新加载?

app.directive('profilePhotoPreview', function () {
    return {
        restrict: "A",
        scope: {
            uuid: "="
        },
        template: "",
        link: function (scope, element, attrs) {
            scope.$watch('uuid', function (value) {
                console.log('profilePhotoPreview ',value);
                if (scope.uuid) {
                    scope.preview = "url('"+conf.s3 + "user_profile_photos/" + scope.uuid + ".jpg')";

                    var s={'width':'400px', 'height':'400px','background-image': scope.preview}
                    element.css(s);
                }

            })

        }
    }
});

在这种情况下,基础照片已更改(即已上传了新的个人资料照片),但URL相同。

我尝试在uuid变量上设置$ watch并将其值从null翻转回其旧值,以欺骗Angular重新渲染css,但这没有效果。

醋甲酸酯

在这种情况下,浏览器已经缓存了该图像。要重新加载它,您可以在图片网址中添加“?xxxx”,其中“ xxxx”是随机字符串。

我的意思是,您只需要在要重新加载pic时更改您的scope.preview变量:

scope.preview = "url('"+conf.s3 + "user_profile_photos/" + scope.uuid + ".jpg?"+getRandomInt(0, 10000)+")";

function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在指令中使用相同的URL重新加载背景图像

如何在React和NextJS中从CSS加载背景图像

如何在css3或jquery中以滚动方式加载背景图像

如何在CSS中组合背景图像+线性渐变?背景图像上的线性渐变

如何在CSS中旋转背景图像?

如何在偏斜层(CSS)中偏斜背景图像?

CSS:如何在div中模糊背景图像?

如何在 CSS 中为背景图像设置动画?

如何在加载时动态设置表单的背景图像?

如何在每次加载时更改背景图像

我们如何在Android中的相对布局背景图像上应用延迟加载

如何在内联样式属性(反应)中延迟加载背景图像?

如何在img标签中重复图像(不是CSS背景图像)

如何在css3中使用图像集设置背景图像?

如何在 Laravel 中提供 css 背景图像位置

如何在Bulma CSS中内联放置背景图像和文本?

如何在css3中制作更暗的背景图像并将其拉伸?

如何在CSS中的背景图像上获取扫描线

如何在CSS中的无缝背景图像上实现不透明的线性渐变等效

如何在html,css中插入全屏大背景图像?

如何在CSS中为背景图像添加顶部填充?

如何在CSS中设置数据库的背景图像?

CSS:如何在悬停时从背景图像中删除带有过渡的色调?

如何在 Xamarin 中修复“ListView 中的背景图像”?

如何在Flask中重新加载图像

如何使CSS中的身体背景图像透明?

我如何使背景图像在CSS中可见

Javascript-如何更改 CSS 中的背景图像属性?

如何在网格中设置背景图像?