uniapp实现列表动态添加

文章详细描述了如何在uniapp项目中,不使用uni-list控件,通过自定义模板实现姓名、年龄和班级的动态输入,并演示了如何向列表中添加和删除对象数据的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.效果图:

2.代码实现:

这里没有用uniapp提供的uni-list控件

<template>
    <view id="app">
    <!--     这里为了让标题(h)居中展示,给h标签设置了父标签,并设置父标签text-align: center;来实现
        标题内容居中展示 -->
        <view class="biaoti">
            <h3>动态添加</h3>
        </view> 
        姓名:<input class="shurukuang" type="text"  maxlength="8"  confirm-type="next"  placeholder="请输入姓名" v-model="name"/>
        <br>
        年龄:<input class="shurukuang" type="number" maxlength="3" confirm-type="next" placeholder="请输入年龄" v-model="age"/>
        <br>
        班级:<input class="shurukuang" placeholder="请输入班级" maxlength="2" v-model="banji"/>
        <br>
        <button id="add" type="primary" hover-start-time="20" @click="addMember()">添加</button>
    <list-view class="main" id="list-view">
        <list-item class="list_item" :data-bean="item" v-for="(item, index) in dataList" :key="index">
            <view style="height: 1upx; background-color:aliceblue; margin-top: 5upx;"></view>
            <view class="horizontal">
                    <text class="item_value">{{item.name}}</text>
                    <text class="item_value">{{item.age}}</text>
                    <text class="item_value">{{item.banji}}</text>
            </view>
            <view style="height: 5upx; background-color: gainsboro;"></view>
        </list-item>
    </list-view>

    </view>
    
</template>
<script setup>
    // const plugin = uni.requireNativePlugin('test')
    export default {
        data() {
            return {
                reply: "",
                msg: "",
                name:"",
                age:"",
                banji:"",
                dataList:[
                    {name:"张三",age:"18",banji:"一班"}
                ]
            }
        },
        onShow: function() {
            //设置状态栏标题
            uni.setNavigationBarTitle({
                title:"人员信息"
            })
        },
        onLoad() {
        },
        methods: {
            addMember(){
                //校验信息是否填写完整
                if(this.name==""){
                    alert("请先输入姓名")
                }else if(this.age==""){
                    alert("请先输入年龄")
                }else if(this.banji==""){
                    alert("请先输入班级")
                }else{
                    //将输入框的数据组装成对象
                    var bean={name:this.name,age:this.age,banji:this.banji}
                    //往list列表添加数据
                    this.dataList.push(bean)
                    //数据添加和刷新成功,清空上一次输入记录
                    this.name=""
                    this.age=""
                    this.banji=""
                }
                
            }
            
 
        }
    }
</script>
<style>
    
    #app{
        text-align: left;
        padding: 16rpx;
    }
    
    
    
    .biaoti{
        text-align: center;
    }
    
    .horizontal{
        text-align: center;
    }
    
    .item_value{
        width: 33%;
        line-height: 60rpx;
        color: black;
        display: inline-block;
    }
    

    
    .shurukuang {
        font-weight: bold;
        padding-left: 1em;
        padding-top: 10rpx;
        padding-bottom: 10rpx;
        border: solid #cecece;
        border-radius: 5rpx;
    }
    
    .h{
        margin-top: 100rpx;
        background: deeppink;
    }
    
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }
 
    .logo {
        height: 200rpx;
        width: 200rpx;
        margin-top: 200rpx;
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 50rpx;
    }
 
    .text-area {
        display: flex;
        justify-content: center;
    }
 
    .title {
        color: #5555ff;
        width: 100vw;
        display: flex;
        justify-content: center;
    }
</style>

3.列表添加和删除:

1.列表添加对象数据:list.push(item)

2.列表删除对象数据:list.splice(i(下标),1)
 

### 如何在 UniApp实现列表筛选功能 #### 使用 CCDropDownFilter 组件实现高效筛选 为了实现UniApp 应用中创建高效的用户筛选体验,可以采用 `CCDropDownFilter` 下拉筛选框组件。此组件专为模仿美团应用程序内的下拉筛选行为而设计,提供了良好的用户体验和交互性能[^2]。 #### 配置筛选数据 当使用 `CCDropDownFilter` 时,主要通过设置 `filterData` 属性来定义可供用户选择的筛选选项。这些数据通常是以数组形式提供给组件,其中每一项代表一个独立的筛选维度或类别。 #### 实现示例代码 下面展示了一个简单的例子,说明如何集成并初始化带有预设筛选条件的 `CCDropDownFilter`: ```html <template> <view class="container"> <!-- CCDropDownFilter 组件 --> <cc-drop-down-filter :filter-data="filterOptions" @change="handleFilterChange"></cc-drop-down-filter> <!-- 列表显示区域 --> <ul v-if="filteredItems.length > 0"> <li v-for="(item, index) in filteredItems" :key="index">{{ item.name }}</li> </ul> <p v-else>无匹配结果</p> </view> </template> <script> export default { data() { return { items: [ { name: '商品A', category: '电子产品' }, { name: '商品B', category: '家居用品' } ], selectedFilters: {}, filterOptions: [ { label: '分类', options: ['全部', '电子产品', '家居用品'] } ] }; }, computed: { filteredItems() { let result = this.items; Object.keys(this.selectedFilters).forEach(key => { if (this.selectedFilters[key]) { result = result.filter(item => item.category === this.selectedFilters[key]); } }); return result; } }, methods: { handleFilterChange(filters) { console.log('当前选中的筛选:', filters); this.selectedFilters = filters; } } }; </script> ``` 上述代码片段展示了怎样利用 Vue 的响应式特性结合 `CCDropDownFilter` 来动态更新显示的内容,从而达到根据用户的输入实时调整列表的效果。 #### 自定义样式与增强功能性 除了基本的功能外,还可以进一步自定义 `CCDropDownFilter` 的外观和行为,比如更改默认的颜色方案、添加动画效果或者支持多级联式的复杂查询逻辑等。这使得开发者能够灵活应对不同业务场景下的具体需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值