【问题标题】:Vue - Switching between componentsVue - 在组件之间切换
【发布时间】:2020-09-20 22:45:03
【问题描述】:

假设我有一个包含 3 个阶段的订单 - 个人详细信息、订单详细信息、付款。

我想从前一个组件中切换下一个组件(希望调整'step'的值)

<Component1 v-if="step = 1"></Component1>
<Component2 v-else-if="step = 2"></Component2>
<Component3 v-else></Component3>

那么,在我看来,我是否可以将“step”的值传递给 component1 并执行类似的操作

<button v-on:click="step = 2">
   Submit
</button>

然后在单击时,更新我的主视图上的 step 值(使用 3 个组件),然后隐藏我的第一个完成的组件并显示第二个?

感谢您的任何见解!

【问题讨论】:

  • 您的问题到底是什么?你试过这个并遇到问题吗?
  • 您需要将值绑定到组件中,然后在单击链接时向父组件发出新值。如果您发出事件input 并绑定值value,那么您可以使用v-model

标签: vue.js vue-component vuex


【解决方案1】:

为什么不使用动态组件?

在你的父组件上,你监听改变你的步骤的事件,我在这里将它命名为nextStep。该事件触发changeStep方法,改变组件名称。

<component @nextStep="changeStep" :name="selectedComponent"></component>

import component1 from "../components/component1.vue";
import component2 from "../components/component2.vue";
import component3 from "../components/component3.vue";
export default {
   data(){
      return {
         selectedComponent: "component1"
      }
   }
},
methods: {
   changeStep(step){
      this.selectedComponent = step;
   }
},
components: {
   component1,
   component2,
   component3
}

//在子组件中

method: {
   changeStep(){
      this.$emit("nextStep", "component2");
   }
}

这是您向父级发送事件以更改组件的方式

您只需将属性selectedComponent 更改为您想要的组件名称,它就会更改它

【讨论】:

  • 您能否通过双向绑定名称(例如v-model)来扩展您的答案?我想他也是这么要求的。
  • @ssc-hrep3 你的意思是把名字发给父母?
  • 是的,完全正确。 ?
  • 是否可以回到history.back() 上的最后一个组件?我可以以某种方式将组件开关添加到历史记录吗?
猜你喜欢
  • 2019-05-05
  • 1970-01-01
  • 2016-08-20
  • 2019-12-07
  • 2021-08-12
  • 1970-01-01
  • 2019-05-02
  • 2016-03-08
  • 1970-01-01
相关资源
最近更新 更多