• TS组件中使用v-model属性


    背景

    前置条件

      1.ts语言
      2.antdv(Ant Design Vue)
    

    正文

    本质:父子组件之间相互传值。

    父组件

    <template>
        <div>
            <test-comp :options="selectData.options"
                       v-model="selectData.checked"
                       @changefun="changefun"></test-comp>
            <button @click="changeSelectValue">改变select值</button>
        </div>
    </template>
    
    <script lang="ts">
        import abpbase from '@/lib/abpbase';
        import { Component } from 'vue-property-decorator';
        import TestComp from '@/views/sample/test/test-comp.vue';
    
        @Component({
            name: 'test',
            components: { TestComp },
        })
        export default class Test extends abpbase {
            selectData = {
                checked: 2, // 选定值(默认选B)
                options: [ // 选择项
                    { key: 1, value: 'A' },
                    { key: 2, value: 'B' },
                    { key: 3, value: 'C' },
                    { key: 4, value: 'D' },
                ],
            }
    
            // 子组件修改选定值
            changefun(key) {
                this.selectData.checked = key;
            }
    
            // 父组件修改选定值
            changeSelectValue() {
                this.selectData.checked = 3; // 选c
            }
        }
    </script>
    
    <style lang="less" scoped>
    
    </style>
    

    子组件

    <template>
        <div>
            <a-select style=" 200px;" @change="mychange($event)" :value="value">
                <a-select-option v-for="(item, index) in options" :key="item.key">
                    {{ item.value }}
                </a-select-option>
            </a-select>
        </div>
    </template>
    
    <script lang="ts">
        import abpbase from '@/lib/abpbase';
        import {
            Component, Emit, Model, Prop,
        } from 'vue-property-decorator';
    
        @Component({
            name: 'TestComp',
            components: {},
        })
        export default class TestComp extends abpbase {
            // 选项
            @Prop({ default: () => ([]), type: Array }) options: object
    
            /**
             * 事件:操作事件,一般用于调用父组件方法并传参。
             * 值:用于接收父组件传过来的值
             */
            @Model('change', { type: Number, default: 0 }) value: number;
            // 等同于
            // @Prop({ type: Number, default: 0 }) value: number;
    
            /**
             * 调用父组件方法,并传值
             * @param key
             */
            @Emit('changefun')
            mychange(key) {
                return key;
            }
        }
    </script>
    
    <style scoped>
    
    </style>
    
    

    结语

  • 相关阅读:
    tip6: 程序不工作就是最大的异常
    简单实用的Code Review工具
    HDU4008 Parent and son [树形DP]
    HDU4004 The Frog's Games [二分]
    HDU4006 The kth great number [堆]
    HDU4024 Dwarven Sniper’s hunting [二分]
    HDU4005 The war [树形DP]
    HDU4009 Transfer water [最小树形图]
    HDU4023 Game [贪心+博弈]
    HDU4007 Dave [杂题]
  • 原文地址:https://www.cnblogs.com/xihailong/p/14177655.html
Copyright © 2020-2023  润新知