添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
机灵的牛肉面  ·  The Log: What every ...·  2 周前    · 
玩命的苦瓜  ·  JessYan: ...·  2 月前    · 
爱逃课的李子  ·  list.stream().filter() ...·  2 月前    · 

在主组件, 左边子组件调用右边子组件方法

定义主组件

<template>
    <ColumnLeft @callChildColumnRight="callChildColumnRightMethod"></ColumnLeft>
    <ColumnRight ref="ColumnRight"></ColumnRight>
</template>
<script>
import ColumnLeft from '@/components/fusure/column/ColumnLeft.vue'; // 导入子组件
import ColumnRight from '@/components/fusure/column/ColumnRight.vue'; // 导入子组件
export default {
    components: {        
        publicMenu,
        ColumnLeft,
        ColumnRight,
    methods:{
      callChildColumnRightMethod(){
        this.$refs.ColumnRight.loadCategories();
</script>

左组件直接调用,注意对应名就行

this.$emit("callChildColumnRight");


主组件给子组件传递参数的方法

父组件中使用子组件并传递参数:

<template>
    <!-- 使用子组件,并通过props属性传递参数 -->
    <child-component :message="parentMessage"></child-component>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  data() {
    return {
      parentMessage: '这是从父组件传递给子组件的消息'
</script>

子组件的定义(ChildComponent.vue):

<template>
    <p>{{ message }}</p>
</template>
<script>
export default {
  props: {
    message: String // 定义一个名为message的props,类型为String
</script>

在上面的代码中,我们首先导入了子组件ChildComponent,然后在父组件的模板中使用了子组件,并通过:message来传递数据给子组件。parentMessage是父组件中的数据,通过props属性传递给子组件的message属性。

这样,子组件就可以在自己的模板中访问message属性,并显示父组件传递过来的数据。


主组件传递多个参数给子组件

在主组件中:

<template>
    <!-- 使用子组件,并传递两个参数 -->
    <child-component :data="childData"></child-component>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  data() {
    return {
      // 将要传递给子组件的两个参数打包成一个对象
      childData: {
        clickCategory: this.clickCategory,
        clickCategoryToHide: this.clickCategoryToHide
</script>

在子组件中:

<template>
    <!-- 子组件中使用 data 属性接收参数 -->
    <div @click="handleClick(data.clickCategory, data.clickCategoryToHide)">
      Click me
</template>
<script>
export default {
  props: {
    // 子组件通过 props 接收参数
    data: {
      type: Object, // 参数类型为对象
      required: true // 参数必须传递
  methods: {
    handleClick(clickCategory, clickCategoryToHide) {
      // 在子组件中访问传递的参数
      console.log('Received clickCategory:', clickCategory);
      console.log('Received clickCategoryToHide:', clickCategoryToHide);
</script>


子组件传递参数给主组件

在主组件中监听自定义事件

<template>
    <!-- 使用子组件,并监听自定义事件 -->
    <child-component @childEvent="handleChildData"></child-component>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  methods: {
    // 处理从子组件传递的数据
    handleChildData(data) {
      // 在这里处理传递回来的数据
      console.log('Received data from child component:', data);
</script>

子组件的定义(ChildComponent.vue):

// 子组件中
<button @click="sendDataToParent">发送数据到主组件</button>
methods: {
  sendDataToParent() {
    // 通过 $emit 触发一个自定义事件,并传递数据
    this.$emit('childEvent', this.dataToSend);