Vue.js 如何使用Vue传递动态道具

Vue.js 如何使用Vue传递动态道具,vue.js,vuejs2,Vue.js,Vuejs2,我需要使用Vue传递道具,我想到了JSON和包含名称和值的对象。我需要将数据传递到不同的组件,但它会随着每个事件中名称和值的更改而更改。 例如,我可能有名称:'a'值:'b',名称:'f'值:'k',在另一个事件中有名称:'c'值:'d' 我的代码可以工作,但它可以工作,因为我返回硬编码的数据 data() { return { params: { name:'bill', value:'jones' },

我需要使用Vue传递道具,我想到了JSON和包含名称和值的对象。我需要将数据传递到不同的组件,但它会随着每个事件中名称和值的更改而更改。 例如,我可能有名称:'a'值:'b',名称:'f'值:'k',在另一个事件中有名称:'c'值:'d' 我的代码可以工作,但它可以工作,因为我返回硬编码的数据

data() {
    return {
        params: {
            name:'bill',
            value:'jones'
        },
在儿童时期

@Component({
    props:
    {
        urls: {
        type: Object,
        default: () => { return {name:'', value: ''} }
    },
    }
函数的对象参数,我需要从中获取数据

getParams(url) {

            paramsData[key] = value;
            //console.log(key,value);
        }
        return params;
        console.log(params)

可以使用计算属性名

emitEvent(name, value) {
  let objectToEmit = {
    [name]: value,
  };
  this.$emit("event-name", objectToEmit);
}
现在,
name
value
将根据您在
emitEvent
函数中传递的内容进行设置

您可以在下面的链接上阅读有关计算属性名称的更多信息

你几乎可以传递任何信息,你可以通过多种方式来实现。以下是4个示例:

注意:对于所有选项,我们假设您有一个使用以下语法的父组件

  <example-component :name="somename" :value="somevalue"></example-component>
选项4:稍微高级一点,但在本例中,我们将绑定get并设置为表单上的输入属性,我们将使用该属性创建工厂表单组件

<template>
    <div>
        <input
            id="name"
            type="text"
            v-model="name"
            class="form--input light"/>
    </div>
</template>

<script>
    export default {
        name: "ExampleComponent",
        props: {
            name: {
                type: String,
                default: ""
            }
        },
        computed: {
            name: {
                get() {
                    return this.value;
                },
                set(value) {
                    this.$emit("input", value);
                }
            }
        }

    }
</script>


导出默认值{
名称:“ExampleComponent”,
道具:{
姓名:{
类型:字符串,
默认值:“
}
},
计算:{
姓名:{
得到(){
返回此.value;
},
设置(值){
这是。$emit(“输入”,值);
}
}
}
}

谢谢您的评论!!我试图使用方法3,但没有成功。我将用更新的代码编辑我的问题
<template>
    <div>
        <p v-text="example"></p>
    </div>
</template>

<script>
    export default {
        name: "ExampleComponent",
        props: {
            name: {
                type: String,
                required: false,
                default: 'something'
            },
            value: {
                type: Number,
                required: true
            }
        },
    }
</script>

<template>
    <div>
<!--     some value from EventServiceClass-->
        <p v-text="example.name"></p>
    </div>
</template>

<script>
    import EventServiceClass from "./EventServiceClass";

    export default {
        name: "ExampleComponent",
        props: {
            example: {
                type: Object,
                default: function () {
                    return {name:'a', value: 'b'}
                }
            },
        },
    }
</script>
<template>
    <div>
        <input
            id="name"
            type="text"
            v-model="name"
            class="form--input light"/>
    </div>
</template>

<script>
    export default {
        name: "ExampleComponent",
        props: {
            name: {
                type: String,
                default: ""
            }
        },
        computed: {
            name: {
                get() {
                    return this.value;
                },
                set(value) {
                    this.$emit("input", value);
                }
            }
        }

    }
</script>