如何从`index.html`访问vuex商店?

时间:2021-04-29 13:27:05

标签: javascript cookies vuex vuejs3

我必须将一些脚本标签嵌入到我的 vue 网络应用程序中。我不确定在哪里添加它,但我选择在 index.html 中添加它们。 #app div 所在的位置。

index.html 下方,我必须嵌入至少 3 或 4 个脚本标签并创建一些 cookie 来更改语言,设置用户的偏好,他们希望被跟踪与否。为此,我需要访问 vuex 商店。

如果我尝试访问 store 表单 index.html 的属性,例如 this.$store.getters.getActiveLanguage;,我会收到错误。

Uncaught TypeError: Cannot read property 'getters' of undefined

听起来我无法从这里访问商店。我该如何解决它,有人可以帮忙吗?提前谢谢你

编辑:index.html 中的完整代码示例

    <!-- Cookie Consent by https://www.FreePrivacyPolicy.com -->
<script type="text/javascript" src="//www.freeprivacypolicy.com/public/cookie-consent/3.1.0/cookie-consent.js"></script>
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", function() {
    cookieconsent.run({ notice_banner_type: "interstitial", consent_type: "express", palette: "dark", language: "en" });
  });
</script>

<!-- easy -->
<!-- const language = .localSorage.getItem("language"); -->
<script type="text/plain" cookie-consent="functionality">
  document.cookie = "functionalityCookie=en";
  this.$store.getters.getActiveLanguage; 
</script>

<script type="text/plain" cookie-consent="tracking">
  document.cookie = "trackingCookie=true";
</script>

<script type="text/plain" cookie-consent="strictly-necessary">
  document.cookie = "strictlyNecessaryCookie=true";
</script>

<!-- end of easy-->

<noscript
  >Cookie Consent by <a href="https://www.FreePrivacyPolicy.com/free-cookie-consent/" rel="nofollow noopener">FreePrivacyPolicy.com</a></noscript
>

1 个答案:

答案 0 :(得分:0)

在您的情况下,this 等于 window

我要做的是在 mounted 运行 cookieconsent.run,您可以在其中设置用户的当前语言

new Vue({
  el: '#app',
  store: store,
  mounted () {
    const language = this.$store.getters.getActiveLanguage;
    cookieconsent.run({ 
      notice_banner_type: "interstitial", 
      consent_type: "express", 
      palette: "dark", 
      language: language 
    });
  }
})