1

我构建了一个 Svelte 应用程序,其中包含一个 stores.js 文件,其中包含一个名为 sSchool 的可写存储值。我以这种方式将应用程序注入到我的 html 页面中。

<div id="app-container"></div>
<script type="text/javascript" src="{% static 'choice/svelte/public/build/bundle.js' %}"></script>
<script>
  var myapp= new app({
    "target": document.getElementById("app-container"),
  })
</script>

我希望能够从此网页内的 JavaScript 片段获取和设置商店价值 sSchool。我怎样才能做到这一点?谢谢。

4

1 回答 1

4

您需要弄清楚的第一件事是如何获得sSchool商店的参考。


1个建议是以与您公开课程相同的方式公开它app,我相信您正在某处做这样的事情?

import App from './App.svelte';
window.app = App;

也许你可以

import sStore from './store.js';
window.sStore = sStore;

这样,您可以通过订阅它来获得商店的价值

sStore.subscribe(value => {
  console.log('store value:', value);
});

并设置商店的价值

sStore.set(newValue);

另一种方法是在组件中定义组件方法app

<script>
   import sStore from './store.js';
   
   export function setStoreValue(newValue) {
     $sStore = newValue;
   }
   export function getStoreValue() {
     return $sStore;
   }
</script>

然后在你的脚本中,

<script>
  var myapp= new app({
    "target": document.getElementById("app-container"),
  })

  myapp.setStoreValue(123);
  myApp.getStoreValue(); // 123
</script>

参考

于 2021-07-07T01:38:44.210 回答