首页 > 其他分享 >动态绑定组件时 v-model:value 的使用

动态绑定组件时 v-model:value 的使用

时间:2024-01-28 23:34:15浏览次数:30  
标签:files name 绑定 value prop key 组件 model

// require import components
const files = require.context("@/components/control", true, /\index.vue$/);
// console.log('files:', files.keys())
//files: ['./cascader/index.vue', './control/cascader/index.vue', './control/checkbox/index.vue',]
const modules = {};
files.keys().forEach(key => {
    const name = key.split("/");
    // console.log('name:', name)
    // name: (3) ['.', 'cascader', 'index.vue']
    // name: (4) ['.', 'control', 'cascader', 'index.vue']
    // console.log('files(key).default:', files(key).default)
    // console.log('files(key):', files(key))
    // files(key): Module {default: {…}, __esModule: true, Symbol(Symbol.toStringTag): 'Module'}
    modules[name[1] + "Component"] = files(key).default || files(key);
});
export default {
    name: "BasisForm",
    // components: {
    //     cascaderComponent,
    //     uploadComponent,
    //     wangeditorComponent,
    //     inputComponent,
    //     dateComponent,
    //     selectComponent,
    //     radioComponent,
    //     checkboxComponent,
    //     textareaComponent,
    // },
    components: modules,
    setup(props, {emit}) {
        <template v-for="item in form_item" :key="item.prop">
            <el-col v-if="!form_hidden[item.prop]" :span="item.col || 24">
                <el-form-item v-if="item.type !== 'slot'" :label="item.label" :prop="item.prop" :rules="item.rules">
                    <component
                        v-model:value="field[item.prop]"
                        :is="item.type + 'Component'"
                        :data="item"
                        :disabled="disabled[item.prop]"
                        @callback="componentCallback"/>
                </el-form-item>
                <el-form-item v-else :label="item.label" :prop="item.prop" :rules="item.rules">
                    <slot :name="item.slot_name"></slot>
                </el-form-item>
             </el-col>
        </template>
    }
}

这段代码是在 Vue.js 中使用的,它使用了 Vue 的动态组件和双向数据绑定。

<component> 是 Vue 的内置组件,用于动态地绑定一个组件。它的 is 属性决定了要渲染哪个组件。在这个例子中,is 属性的值是 item.type + 'Component',这意味着它会根据 item.type 的值动态地渲染不同的组件。

v-model:value="field[item.prop]" 是 Vue 的双向数据绑定语法。v-model 指令在内部为不同的输入元素使用不同的 property 并抛出不同的事件,但是 v-model 不会在 component 上生效,因为多数组件不会像原生的输入元素那样使用 value 作为其 prop 名或 input 作为其事件名。这就是为什么在这里使用 v-model:value 的原因。

field[item.prop] 是一个动态的属性名,它的值会被绑定到当前渲染的组件的 value prop 上。当组件触发 update:modelValue 事件并传递新的值时,field[item.prop] 的值会被更新。

总的来说,这段代码的意思是:动态地渲染一个组件,并将 field[item.prop] 的值绑定到这个组件的 value prop 上,当组件的 value prop 的值改变时,field[item.prop] 的值也会相应地改变。

标签:files,name,绑定,value,prop,key,组件,model
From: https://www.cnblogs.com/vPYer/p/17993625

相关文章

  • Vue模板语法——数据绑定指令
    一、数据绑定指令v-text填充纯文本相比插值表达式更加简洁v-html填充HTML片段存在安全问题本网站内部数据可以使用,来自第三方的数据不可以用v-pre填充原始信息显示原始信息,跳过编译过程(分析编译过程)二、v-text填充纯文本v-text用法在需填充的标签中添加......
  • Vue模板语法——v-model 双向数据绑定
    双向数据绑定单向数据绑定是什么?数据模型(Module)和视图(View)之间的单向绑定。需要我们先写好模板,然后把模板和数据(可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面。简单的来说就是DOM操作html元素。单向数据绑定的缺点:一旦HTML代码生成好后,就没有办......
  • Vue模板语法——v-on 事件绑定
    一、v-on事件绑定v-on指令用于绑定事件v-on用法转=>最底层的技术渣--Vue基础语法之v-on转=>一瓶怡宝矿泉水--v-on指令直接绑定事件:注意:绑定的事件是对应的方法不是定义在data里面,而是定义在vue实例的methods里绑定的函数可直接绑定函数名——fun,也可以直接调用......
  • mysql连接报错:The server time zone value '�й���׼ʱ��'
    java.sql.SQLException:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmorethanonetimezone.YoumustconfigureeithertheserverorJDBCdriver(viatheserverTimezoneconfigurationproperty)touseamorespecifctimez......
  • C# 动态对象 灵活数据绑定
    //当不想创建类,或者这个类的字段是动态变化的(不确定有多少字段)//可以考虑动态对象,方便好用//此处示例是用DataGrid用的数据源动态绑定ObservableCollection<dynamic>dataSource=newObservableCollection<dynamic>();//创建动态对象dynamicdynamicObject=newExpandoObject(......
  • docker安装宝塔面板并跳过强制绑定账号
    1.下载镜像dockerpullbtpanel/bt2.启动dockerrun-itd--net=host--restart=always-v/data/app:/opt--namebaotacyberbolt/baota:latest这里映射目录是为了上传的文件,宿主机可以看到3.跳过强制绑定账号:进入容器执行下面脚本rm-rf/www/server/panel/dat......
  • 在PyCharm中运行Python的unit测试时,出现‘file‘ object has no attribute ‘getvalue
    https://blog.csdn.net/m0_46900715/article/details/129725053  ......
  • SPSS Modeler决策树分类模型分析商店顾客消费商品数据
    全文链接:https://tecdat.cn/?p=34926原文出处:拓端数据部落公众号随着大数据时代的来临,数据挖掘和分析在商业决策中扮演着越来越重要的角色。商店的顾客消费行为数据是商业决策的关键信息之一,通过对这些数据的深入分析,可以更好地理解顾客的消费习惯和偏好,从而优化商品销售策略,提......
  • wpf_绑定两个ViewModel
    Juster.Music\MainWindow.xaml.csnamespaceJuster.Music{///<summary>///InteractionlogicforMainWindow.xaml///</summary>publicpartialclassMainWindow:Window{publicMainWindow(){......
  • 31动态绑定的时机
    动态绑定的时机在类的构造函数中调用的任何(虚)函数,都不会发生动态绑定。如果不是通过指针或引用调用虚函数,也还是静态绑定。classBase{public: Base(intdata=10):ma(data){cout<<"Base"<<endl;} virtual~Base(){cout<<"~Base"<<endl;} virtualv......