これは私の最初の投稿であるstackoverflowです。私の質問;VueJSのルートデータにアクセスできない
私はVueJSプロジェクトをセットアップしました。別のコンポーネントからApp.vueに入れたデータにアクセスしようとしています。これを行うには、たとえば$ root.countを使用しますが、undefinedを返します。
Main.js:
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
routes: [{
path: '/',
name: 'home',
component: function (resolve) {
require(['./components/Hello.vue'], resolve)
}
}, {
path: '/race-pilot',
name: 'racePilot',
component: function (resolve) {
require(['./components/RacePilot.vue'], resolve)
}
}
});
new Vue({
el: '#app',
router,
template: '<App/>',
components: { App }
});
App.vue:
<template>
<div>
<div class="menu" ref="menu">
<router-link :to="{ name: 'home' }">Home</router-link>
<router-link :to="{ name: 'racePilot' }">Race Pilot</router-link>
</div>
<div id="app">
<router-view></router-view>
</div>
</div>
</template>
<style src="./assets/css/app.scss" lang="scss"></style>
<script>
import Hello from './components/Hello'
export default {
name: 'app',
components: {
Hello
},
data() {
return {
count: '0'
}
}
}
</script>
RacePilot.vue:
<template>
<div class="race-pilot">
</div>
</template>
<script>
export default {
name: 'RacePilot',
mounted() {
console.log(this.$root.count);
}
}
</script>
だから、最後のログ・リターンsは未定義です。しかし、これを。$ rootに記録すると、オブジェクトを取得します。誰も考えられない?前もって感謝します!
私が持っている質問のみ。 3人の子供が離れていて、グローバル変数の数を変更したい場合はどうすればいいですか?これは$ルートが動作していないためです... – Insurgo
いくつかのオプションがあります。 Vuexを使うことは、多くの人々があなたに伝えるものですが、私はVuexが小規模なプロジェクトでは過度のものであると感じています。イベントバスが最も簡単です。または、グローバルミックスインを使用してすべてのコンポーネントで利用可能なVuexのような独自のストアを作成することもできます。 – Bert
グローバルデータ用のスーパーシンプルストアの例http://codepen.io/Kradek/pen/XMqvPo?editors=1010 – Bert