// page A
<h1>{{pageDataA}}</h1>
<router-link to="PageB">pageb</router-link>
data:{
pageDataA:'苹果'
}
// page B
<li @click="toThis">香蕉</li>
<li @click="toThis">橘子</li>
pageA中pageDataA现在显示苹果,路由跳转到pageB后,toThis()选择不同的水果赋值到pageDataA,应该怎么处理?
// page A
<h1>{{pageDataA}}</h1>
<router-link to="PageB">pageb</router-link>
data:{
pageDataA:'苹果'
}
// page B
<li @click="toThis">香蕉</li>
<li @click="toThis">橘子</li>
pageA中pageDataA现在显示苹果,路由跳转到pageB后,toThis()选择不同的水果赋值到pageDataA,应该怎么处理?
这是两个独立组件,并非是父子组件。既然是router-view了,那由A切到B,那A的生命已经完犊子了,所以你使用$emit
也是通知不到的。
所以最好的方案就是使用vuex
去实现,toThis向store中修改数据状态,到A页面之后A去读取对应的数值。
用vuex
就好了,其他的用起来真的特别麻烦
//引入vuex.js
<script src="/static/js/vue/vuex.js"></script>
//声明vuex
const store = new Vuex.Store({
state: {
fruit: "",
}
});
//直接用这个值,用起来有点像全局双向绑定
store.state.fruit = "苹果"
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答5k 阅读
不是很明白你的意思。。
不过如果是要把pageB的水果放到pageA的变量里,或许可以看看这里非父子组件通信。既然看到vue router的话或许你可以试试vuex了。
如果这两个组件在写在同一个文件里的话,也可以先将pageA的Vue实例注册到一个全局变量vm里,然后
vm.$data.pageDataA='香蕉'
,不过不推荐这种方式