我想将聚合物元素从聚合物2迁移到聚合物3中。
聚合物元素使用带有.svg文件的文件夹的相对路径。
const url = this.resolveUrl('./icons/' + this.icon + '.svg');
问题是旧组件文件是.html文件,因此如果包含它,则脚本部分中的相对路径始终相同。
现在组件文件是一个javascript文件,因此相对路径(。)是包含javascript文件的文件的路径。
答案 0 :(得分:3)
要解决此问题,请将以下getter方法添加到元素类中:
static get importMeta() {
return import.meta;
}
加载元素后,上面的getter会分配元素的importPath
属性。 resolveUrl
现在将根据importPath
解决相对路径,而不是基于主文档。
顺便说一句,您也可以在数据绑定中使用importPath
,如下所示:
<img src$="[[importPath]]/icons/[[icon]].png">
有关Polymer默认情况下不重写模板中URL的原因的更多信息,请see the documentation on DOM templating。
(顺便说一句,看起来该页面上关于importPath
的内容需要更新。我raised an issue使用我在上面概述的最新信息更新网站。)
希望有所帮助