uniapp的树形选择器,tki-tree组件

根据:树形选择器增强版,支持多选、单选、父级选择,Picker形式 - DCloud 插件市场

树形选择器:使用tki-tree组件:

先导入并注册组件:

在javascript中:export default外放import,在export default内data外放注册components

import tkiTree from "@/commons/tki-tree/tki-tree.vue"
components: {
			tkiTree,
		},

template中写:

<tki-tree ref="tkitree" :range="range" :rangeKey="rangeKey" confirmColor="#4e8af7" />

在data的return中写:

data() {
			return {
				ascName: '',
				userId: '',
				list: {

					"address": "",
					"asc": "",
					"dept": "",
					"email": "",
					"idNumber": "",
					"phone": "",
					"realName": ""

				},
				duoxuan: [{
					id: 6,
					name: '湖南省',
				}, ]
			}
		},

在javascript内data外写:

let testList = [{
			id: 1,
			name: '北京市',
			children: [{
				id: 11,
				name: '市辖区',
				children: [{
						id: 111,
						name: '西城区',
						children: [{
							id: 1111,
							name: '南河沿大街',
							children: [{
								id: 11111,
								name: '紫金宫饭店',
								checked: true
							}, ]
						}, ]
					},
					{
						id: 112,
						name: '东城区',
					},
					{
						id: 113,
						name: '朝阳区',
					},
					{
						id: 114,
						name: '丰台区',
					}
				]
			}, ]
		},
		{
			id: 2,
			name: '河北省',
			children: [{
					id: 21,
					name: '石家庄市',
				},
				{
					id: 22,
					name: '唐山市',
				},
				{
					id: 23,
					name: '秦皇岛市',
				},
			]
		},
		{
			id: 3,
			name: '山东省',
			children: [{
					id: 31,
					name: '济南市',
					children: [{
							id: 311,
							name: '历下区',
							children: [{
								id: 3131,
								name: '解放路街道办事处',
							}, ]
						},
						{
							id: 312,
							name: '槐荫区',
						},
						{
							id: 313,
							name: '天桥区',
						},
						{
							id: 314,
							name: '历城区',
						},
						{
							id: 315,
							name: '长清区',
						}
					]
				},
				{
					id: 32,
					name: '青岛市',
				},
				{
					id: 33,
					name: '临沂市',
					children: [{
							id: 331,
							name: '兰山区',
							children: [{
								id: 3331,
								name: '金雀山街道',
							}, ]
						},
						{
							id: 332,
							name: '河东区',
						},
						{
							id: 333,
							name: '罗庄区',
							children: [{
								id: 3331,
								name: '盛庄街道',
							}, ]
						}
					]
				},
				{
					id: 34,
					name: '日照市',
				},
				{
					id: 35,
					name: '淄博市',
				},
				{
					id: 36,
					name: '枣庄市',
				},
				{
					id: 37,
					name: '东营市',
				},
				{
					id: 38,
					name: '潍坊市',
				},
				{
					id: 39,
					name: '烟台市',
				},
				{
					id: 40,
					name: '济宁市',
				},
				{
					id: 41,
					name: '泰安市',
				},
				{
					id: 42,
					name: '威海市',
				},
				{
					id: 43,
					name: '滨州市',
				},
				{
					id: 44,
					name: '菏泽市',
				},
			]
		},
		{
			id: 4,
			name: '河南省',
		},
		{
			id: 5,
			name: '湖北省',
		},
		{
			id: 6,
			name: '湖南省',
		}
	]

页面加载时调用:

onLoad() {
			setTimeout(() => {
				this.duoxuan = testList;
			}, 300)

案例:

树标签:

<tki-tree ref="tkitree" :selectParent='true' :range="treeData" title="请选择" rangeKey="name"
			confirmColor="#4e8af7" @confirm="selectAsc" />

事件:赋值给data表单(自己data里面写啥就把data这4个字换成啥),用来保存新增之类的提交给后端API接口的。

	selectAsc(e) {
				this.data.asc = e[0].id
				this.data.ascName = e[0].name
			},

举个官网栗子(官网导入的好像不行,可以看看我这个):

链接:https://pan.baidu.com/s/1lsR1OeGU74fLvferbqM-DA 
提取码:Cwei

### 如何在 UniApp 中实现联级选择器 Tree 结构 #### 使用 `tkiTree` 组件实现树状结构选择 为了创建一个功能丰富的树形结构选择器,在 UniApp 中可以利用插件市场的 `tkiTree` 组件。此组件不仅支持多选、单选以及父子节点的选择,还能够以 Picker 形式展现给用户[^2]。 ```html <template> <view class="container"> <!-- tkiTree 组件 --> <tki-tree :list="treeList" @on-change="handleChange" mode="multiSelect" /> <!-- 显示已选项 --> <text>{{ selectedItems }}</text> </view> </template> <script> export default { data() { return { treeList: [ // 初始化树的数据列表... ], selectedItems: '' }; }, methods: { handleChange(e) { console.log('Selected items:', e); this.selectedItems = JSON.stringify(e); // 更新显示的内容 } }, onLoad() { // 加载页面时初始化数据... } }; </script> ``` 上述代码展示了如何集成并配置 `tkiTree` 来构建一个多选模式下的树形选择器实例。开发者可以根据实际需求调整参数设置来满足不同的业务逻辑要求。 #### 地区选择器案例分析 另一个具体的例子是从地区选择出发设计的联级选择器。这里采用了一个名为 `<cc-address-selector>` 的自定义标签来进行区域间的逐层挑选工作[^3]: ```html <template> <view> <button type="primary" size="mini" @click="showSelector">点击选择地址</button> <cc-address-selector ref="addressSelector" :districtData1="regionData" :level="2" :title="'请选择'" @getAddress="handleGetAddress"/> </view> </template> <script> import regionData from '@/utils/regions'; // 假设这是预先准备好的地理信息文件路径 export default { components: {}, props: [], data () { return {}; }, computed: {}, watch:{}, created(){}, mounted(){ }, methods:{ handleGetAddress(title, data){ alert(`您选择了${data.map(item=>item.name).join('-')}`); }, showSelector(){ this.$refs.addressSelector.showSelector(); } } } </script> ``` 这段脚本说明了怎样借助第三方库中的预处理过的地理位置数据集作为输入源,并通过事件监听机制捕获用户的最终决定项以便进一步处理或提交表单。 #### 添加搜索功能到联级选择器 对于大型树形结构而言,提供快速定位特定项目的手段是非常必要的。为此可以在原有的基础上加入搜索框,允许使用者键入关键词从而过滤出符合条件的结果集合[^4]。 ```html <!-- 在模板部分增加 input 输入框用于接收查询条件 --> <input v-model.trim="searchQuery" placeholder="请输入关键字..." /> <!-- 修改 tkiTree 或其他类似组件绑定新的 prop 属性 enableSearch 和 searchValue --> <tki-tree ... :enable-search="true" :search-value="searchQuery" /> ``` 以上就是有关于UniApp框架下开发带有筛选能力的分级菜单系统的指南片段。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值