主要用于进行地址列表的展示以及操作。
import { createApp } from "vue";
import { AddressList } from "@nutui/nutui-taro";
const app = createApp();
app.use(AddressList);
:::demo
<template>
<nut-address-list
:data="data"
@click-item="clickItem"
@del-icon="delClick"
@edit-icon="editClick"
:show-bottom-button="false"
:data-options="dataOptions"
>
</nut-address-list>
</template>
<script lang="ts">
import { ref, reactive } from 'vue';
export default {
setup() {
const data = ref([
{
testid:3,
testaddressName:'姓名',
phone:'123****4567',
defaultAddress:false,
fullAddress:'北京市通州区测试测试测试测试测试测试测试测试测试'
},
{
testid:4,
testaddressName:'姓名',
phone:'123****4567',
defaultAddress:true,
fullAddress:'北京市通州区测试测试测试测试测试测试测试测试测试'
},
]);
const dataOptions = reactive({
id: 'testid',
addressDetail:'testaddressDetail',
addressName:'testaddressName'
});
const clickItem = ()=>{
console.log('Click To Address');
}
const delClick = ()=>{
console.log('Click To Delete');
}
const editClick = ()=>{
console.log('Click To Edit');
}
return {
data,
clickItem,
delClick,
editClick,
dataOptions
};
}
};
</script>
:::
:::demo
<template>
<nut-address-list
:data="data"
long-press
:show-bottom-button="false"
@del-icon="delClick"
@edit-icon="editClick"
@click-item="clickItem"
@long-copy="copyClick"
@long-set="setClick"
@long-del="delClickLong"
:data-options="dataOptions"
>
</nut-address-list>
</template>
<script lang="ts">
import { ref, reactive } from 'vue';
export default {
setup() {
const data = ref([
{
testid:3,
testaddressName:'姓名',
phone:'123****4567',
defaultAddress:false,
fullAddress:'北京市通州区测试测试测试测试测试测试测试测试测试'
},
{
testid:4,
testaddressName:'姓名',
phone:'123****4567',
defaultAddress:true,
fullAddress:'北京市通州区测试测试测试测试测试测试测试测试测试'
},
]);
const dataOptions = reactive({
id: 'testid',
addressDetail:'testaddressDetail',
addressName:'testaddressName'
});
const clickItem = ()=>{
console.log('Click To Address');
}
const delClick = ()=>{
console.log('Click To Delete');
}
const editClick = ()=>{
console.log('Click To Edit');
}
const copyClick = ()=>{
console.log('Click To Copy');
}
const setClick = ()=>{
console.log('Click On Settings');
}
const delClickLong = ()=>{
console.log('Click To Add');
}
return {
data,
clickItem,
delClick,
editClick,
copyClick,
setClick,
delClickLong,
dataOptions
};
}
};
</script>
:::
:::demo
<template>
<nut-address-list
:data="data"
swipe-edition
show-bottom-button
@edit-icon="editClick"
@del-icon="delClick"
@click-item="clickItem"
@swipe-del="delClickSwipe"
@add="addAddress"
:data-options="dataOptions"
>
</nut-address-list>
</template>
<script lang="ts">
import { ref, reactive } from 'vue';
export default {
setup() {
const data = ref([
{
testid:3,
testaddressName:'姓名',
phone:'123****4567',
defaultAddress:false,
fullAddress:'北京市通州区测试测试测试测试测试测试测试测试测试'
},
{
testid:4,
testaddressName:'姓名',
phone:'123****4567',
defaultAddress:true,
fullAddress:'北京市通州区测试测试测试测试测试测试测试测试测试'
},
]);
const dataOptions = reactive({
id: 'testid',
addressDetail:'testaddressDetail',
addressName:'testaddressName'
});
const clickItem = ()=>{
console.log('Click To Address');
}
const editClick = ()=>{
console.log('Click To Edit');
}
const delClick = ()=>{
console.log('Click To Delete');
}
const delClickSwipe = () => {
console.log('Click On DelClickSwipe');
};
const addAddress = ()=>{
console.log('Click To Add');
}
return {
data,
clickItem,
delClick,
editClick,
setClick,
delClickSwipe,
addAddress,
dataOptions
};
}
};
</script>
:::
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| data | 地址数组 | Array | - |
| long-press | 长按功能 | boolean | false |
| swipe-edition | 右滑功能 | boolean | false |
| show-bottom-button | 是否展示底部按钮 | boolean | true |
| data-options | 自定义 key 值时,设置映射关系 |
Object | - |
| 事件名 | 说明 | 回调参数 | 备注 |
|---|---|---|---|
| del-icon | 点击删除图标 | event: Event,item | 公共 |
| edit-icon | 点击编辑图标 | event: Event,item | 公共 |
| click-item | 点击地址列表每一项 | event: Event,item | 公共 |
| add | 点击底部添加地址按钮 | event: Event | 公共 |
| long-copy | 点击复制地址按钮 | event: Event,item | 长按功能下点击事件 |
| long-set | 点击设置默认按钮 | event: Event,item | 长按功能下点击事件 |
| long-del | 点击删除地址按钮 | event: Event,item | 长按功能下点击事件 |
| swipe-del | 默认右滑删除按钮 | event: Event,item | 滑动功能下点击事件 |
AddressList 组件默认划分为若干区域,这些区域都定义成了插槽,可以按照需求进行替换
| 名称 | 说明 | 说明 |
|---|---|---|
| item-infos | 地址列表项姓名/联系方式/默认一行 | 公共 |
| itemicon | 地址列表项图标 | 公共 |
| itemaddr | 地址列表项详细地址 | 公共 |
| swipe-right | 地址列表项右滑区域 | 滑动功能下使用 |
| longpress-btns | 地址列表项长按遮罩内容 | 长按功能下使用 |
下面是 data 数组中每一项 基础数据结构
const dataInfo = {
id: 2, //地址id
addressName: "姓名", //地址姓名
phone: "123****4567", //联系方式
defaultAddress: false, //是否是默认
fullAddress: "北京市通州区测试测试测试测试测试测试测试测试测试", //详细地址
};
组件内优先获取基础数据结构中定义的字段,若想自定义 key 值,可以通过 dataOptions 设置映射关系
const dataOptions = {
id: "testid",
addressDetail: "testaddressDetail",
addressName: "testaddressName",
};
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。
| 名称 | 默认值 | | --------------------------------------- | -------------------------- | | --nut-addresslist-bg | #fff | | --nut-addresslist-border | #f0f0f0 | | --nut-addresslist-font-color | #333333 | | --nut-addresslist-font-size | 16px | | --nut-addresslist-mask-bg | rgba(0, 0, 0, 0.4) | | --nut-addresslist-addr-font-color | #666666 | | --nut-addresslist-addr-font-size | 12px | | --nut-addresslist-set-bg | #f5a623 | | --nut-addresslist-del-bg | #e1251b | | --nut-addresslist-contnts-contact-default | var(--nut-primary-color) | | --nut-addresslist-contnts-contact-color | var(--nut-white) |