使用vue3+ts+setup语法糖+antdesign编写一个弹出框padding为10px,标题为添加网址,另起一行有两个输入框,左边输入框占三分之一,右边输入框占三分之二,编写以上要求的弹出框
时间: 2024-02-16 09:04:16 浏览: 76
好的,下面是代码实现:
```vue
<template>
<a-modal v-model:visible="visible" title="添加网址" :footer="null">
<div style="padding: 10px">
<a-row :gutter="16">
<a-col :span="8">
<a-input v-model:value="leftInput" placeholder="左侧输入框" />
</a-col>
<a-col :span="16">
<a-input v-model:value="rightInput" placeholder="右侧输入框" />
</a-col>
</a-row>
<div style="text-align: right; margin-top: 10px">
<a-button type="default" @click="visible = false">取消</a-button>
<a-button type="primary" style="margin-left: 10px" @click="handleOk">确认</a-button>
</div>
</div>
</a-modal>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
import { Modal, Row, Col, Input, Button } from 'ant-design-vue';
export default defineComponent({
components: {
'a-modal': Modal,
'a-row': Row,
'a-col': Col,
'a-input': Input,
'a-button': Button,
},
props: {
visible: Boolean,
onClose: Function,
},
setup(props) {
const leftInput = ref('');
const rightInput = ref('');
const handleOk = () => {
console.log('左侧输入框:', leftInput.value);
console.log('右侧输入框:', rightInput.value);
props.onClose();
};
return {
leftInput,
rightInput,
handleOk,
};
},
});
</script>
```
解释一下代码:
- 使用 `a-modal` 组件实现弹出框,并且将其可见性绑定到 `visible` 属性上,标题为 "添加网址",取消按钮不需要自带的 footer。
- 在弹出框中使用 `a-row` 和 `a-col` 组件实现左右两个输入框的布局,其中左侧输入框占三分之一的宽度,右侧输入框占三分之二的宽度。
- 在输入框中使用 `v-model:value` 指令将输入框的值绑定到组件中定义的 `leftInput` 和 `rightInput` 变量上。
- 在弹出框的底部使用 `a-button` 组件实现确认和取消按钮,并且通过 `@click` 绑定点击事件。
- 在确认按钮的点击事件中,输出左侧输入框和右侧输入框的值,并且调用 `onClose` 方法关闭弹出框。
希望这个例子能够帮助你实现你的需求。
阅读全文