我正在使用svelte创建一个个人网站。我想把一大块javascript代码放在我最终的HTML代码的头部,它基于一个svelte组件。所以我有像这样的东西
<svetle:head>
<script> var url = "myurl.com/"; </script>
<svetle:head>在[slug].svelte文件中。我想替换一个传入此组件的值,作为脚本中的一个属性。我试着做一些像这样的事情
<svetle:head>
<script> var url = "myurl.com/{post.slug}"; </script>
<svetle:head>不幸的是,这不起作用。如果替换{post.slug}发生在<script>之外,svelte将在将生成的html传递给客户端之前执行替换。然而,因为它在<script>中,svelte似乎假设我必须真正想要"myurl.com/{post.slug}",而不是"myurl.com/my-post-name"。我认为这可能是因为{}在javascript中有意义。
请注意,我已经尝试了"myurl.com/{post.slug}"、"myurl.com/"{post.slug}、myurl.com/${post.slug}的每种组合。<script>中的任何{post.slug}位置都不会被替换。
如何让svelte在执行.svelte组件中的所有其他替换的同时执行此替换?我无法想象有没有办法做到这一点,但svelte文档似乎并没有解决这个问题。
发布于 2021-09-21 16:06:24
这有点奇怪,但是如果您需要的值是一个文本字符串,您可以将它放在<meta>标记中,然后选择它。
<svelte:head>
<meta name="myVar" content={post.slug} />
<script>
var url = document.querySelector('meta[name=myVar]')
console.log(url.getAttribute('content'))
</script>
</svelte:head>然而,我怀疑在没有这样的变通方法的情况下,可能有一种更好的方法来实现这一点,并且更多地了解代码将如何使用变量将有助于提供更好的答案。
https://stackoverflow.com/questions/63419284
复制相似问题