javascript - vuejs - 如何将 Prop 和事件动态传递给动态组件

标签 javascript vue.js vue-component repository-pattern factory-pattern

我有一个动态组件,它根据每个组件的类型加载它,我传递的 Prop 在所有组件中使用

<div>
        <component
            :is="getComponentName(attribute.type.toLowerCase())"
            :cell-value="listItem[attribute.name]"
            :attribute="attribute"
            :is-read-only="isReadOnly"
            :row-key-id="listItem.keyId"
        />
</div>

组件是从 json 中加载的,其中每种类型都分配了一个组件

{
    "dropdown" : {
        "shouldLoadComponent" : "BaseDropDown"
    },
    "assigned" :{
        "shouldLoadComponent" : "BaseDropDown"
    },
    "textbox" : {
        "shouldLoadComponent" : "BaseInput"
    },
    "label": {
        "shouldLoadComponent" : "BaseLabel"
    },
    "switch": {
        "shouldLoadComponent" : "BaseSwitch"
    },
    "time": {
        "shouldLoadComponent" : "BaseLabel"
    },
    "status" : {
        "shouldLoadComponent" : "BaseLabel"
    },
    "comment": {
        "shouldLoadComponent" : "BaseLabel"
    },
    "action": {
        "shouldLoadComponent" : "BaseLabel"
    },
    "personalimage":{
        "shouldLoadComponent" : "BaseLabel"
    }
}

主要问题是有一些非通用的 props 并且它们没有在所有组件中使用

执行此操作的最佳方法是什么?

这也是事件的一个问题,因为每个事件组件都有自己独特的

最佳答案

好的,只需将 v-bindv-on 与一个对象一起使用,您就可以通过计算属性来处理对象

<component :is="myComponent"
 v-bind="myComputedConditionalObject"
 v-on="myComputedConditionalEventObject"
/>

关于javascript - vuejs - 如何将 Prop 和事件动态传递给动态组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65446480/

相关文章:

java - 如何在 IE 中使 GWT Alert 提示变大

javascript - 将多个参数传递给 ng-click 方法

vue.js - 我可以将 Laravel 与 Vue 店面模板混合使用吗

javascript - 为什么动态组件中的 prop 没有反应?

javascript - Vue.js 动态组件 - 仅在组件内部获取数据时加载

javascript - 在组件外使用 VueI18n 的问题

php - 无法进入 getJSON 函数()

javascript - 如何让语音识别持续固定时间段?

javascript - 如何在计算中使用其他计算属性

javascript - Vue 1.0 -> 2.0 router.start 问题