gpt4 book ai didi

javascript - vue-router 访问组件数据

转载 作者:行者123 更新时间:2023-11-30 21:09:43 25 4
gpt4 key购买 nike

我正在玩 vue-router 文档中给出的示例

HTML:

<div id="app">
<h3>{{title}}</h3>
<router-link to="/">/home</router-link>
<router-link to="/foo">/foo</router-link>
<router-view></router-view>
</div>

JavaScript:

const Foo = { template: '<div>foo</div>', data: {title: "Foo" }
const Bar = { template: '<div>bar</div>', data: {title: "Bar" }

是否可以在 anchor 之外访问选定的组件数据并更新 {{title}} header ?

完整的例子是here

最佳答案

我有两种可能性。第一个是直接使用 this.$parent.title 编辑您的父数据。第二种方式是触发一个事件this.$parent.$emit('changeTitle', 'foo');

我认为最后一个更好,因为你的状态的控制总是在你的父组件中。

const Home = { 
template: '<div>Home</div>',
data: {
title: "Home"
},
mounted() {
this.$parent.title = 'home'; // directly
}
}
const Foo = {
template: '<div>Foo</div>',
data: {
title: "Foo"
},
mounted() {
this.$parent.$emit('changeTitle', 'foo'); // emit an event
}
}

const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/',
component: Home
},
{
path: '/foo',
component: Foo
}
]
})

new Vue({
router,
el: '#app',
data: {
title: 'Initial'
},
destroy() {
this.$off('changeTitle');
},
created() {
const _self = this;

this.$on('changeTitle', function(newTitle) {
_self.title = newTitle;
});
}
})
<script src="https://npmcdn.com/vue/dist/vue.js"></script>
<script src="https://npmcdn.com/vue-router/dist/vue-router.js"></script>

<div id="app">
<h3>{{title}}</h3>
<router-link to="/">/home</router-link>
<router-link to="/foo">/foo</router-link>
<router-view></router-view>
</div>

关于javascript - vue-router 访问组件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com