016-穿梭框

本文详细介绍了layui的Transfer组件,包括其基本参数、数据源格式解析回调函数`parseData`、左右穿梭回调函数`onchange`、获取右侧数据的方法、实例重载以及全局默认参数设置。通过示例代码展示了如何渲染、配置和操作Transfer组件,以实现数据筛选和交互功能。

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

1. transfer组件可以进行数据的交互筛选。模块加载名称: transfer。

2. 基础参数

2.1. 目前transfer组件提供以下基础参数, 可根据需要进行相应的设置:

3. 数据源格式解析的回调函数 - parseData

3.1. 用于将任意数据格式解析成transfer组件规定的数据格式, 以下是合法的数据格式如下:

[
	{"value": "1", "title": "李白", "disabled": "", "checked": ""}
	,{"value": "2", "title": "杜甫", "disabled": "", "checked": "true"}
	,{"value": "3", "title": "李清照", "disabled": true, "checked": ""}
	,{"value": "4", "title": "李冶", "disabled": "", "checked": ""}
	,{"value": "5", "title": "薛涛", "disabled": "", "checked": ""}
	,{"value": "6", "title": "刘采春", "disabled": "", "checked": ""}
]

3.2. 然而很多时候你返回的数据格式可能并不符合规范, 那么您需要将其解析成transfer组件所规定的数据格式:

<script type="text/javascript">
	layui.use(['transfer'], function() {
		var transfer = layui.transfer;

		// 渲染
	    transfer.render({
	    	elem: '#test1'  // 指向容器选择器
	    	,title: ['诗人', '女诗人'] // 穿梭框上方标题
	    	,id: 'poet-transfer' // 设定实例唯一索引, 用于基础方法传参使用          
	      	,data: [
	        	{"value": "1", "title": "李白", "disabled": "", "checked": ""}
	        	,{"value": "2", "title": "杜甫", "disabled": "", "checked": "true"}
	        	,{"value": "3", "title": "李清照", "disabled": true, "checked": ""}
	        	,{"value": "4", "title": "李冶", "disabled": "", "checked": ""}
	        	,{"value": "5", "title": "薛涛", "disabled": "", "checked": ""}
	        	,{"value": "6", "title": "刘采春", "disabled": "", "checked": ""}
	      	]
	      	// 对data数据解析。如果data数据不合法, 这个方法可以用来返回合法数据。
      	  	,parseData: function(res){ 
		    	return {
		      		"value": res.value // 数据值
			      	,"title": res.title // 数据标题
			      	,"disabled": res.disabled  // 是否禁用
			      	,"checked": res.checked // 是否选中
		    	}
		  	}
	    }); 
	});              
</script>

4. 左右穿梭的回调函数 - onchange

4.1. 当数据在左右穿梭时触发, 回调返回当前被穿梭的数据:

<script type="text/javascript">
	layui.use(['transfer'], function() {
		var transfer = layui.transfer;

		// 渲染
	    transfer.render({
	    	elem: '#test1'  // 指向容器选择器
	    	,title: ['诗人', '女诗人'] // 穿梭框上方标题
	    	,id: 'poet-transfer' // 设定实例唯一索引, 用于基础方法传参使用
	      	,onchange: function(data, index){
		    	console.log(data); // 得到当前被穿梭的数据
		    	console.log(index); // 如果数据来自左边index为0, 否则为1
		  	}
	    });
	});              
</script>

5. 获得右侧数据

5.1. 穿梭框的右侧数据通常被认为是选中数据, 因此你需要得到它并提交到后台:

<script type="text/javascript">
	layui.use(['transfer'], function() {
		var transfer = layui.transfer;

		// 渲染
	    transfer.render({
	    	elem: '#test1'  // 指向容器选择器
	    	,title: ['诗人', '女诗人'] // 穿梭框上方标题
	    	,id: 'poet-transfer' // 设定实例唯一索引, 用于基础方法传参使用
	    });

		// 获得右侧数据
		var getData = transfer.getData('poet-transfer'); 
	});              
</script>

6. 实例重载

6.1. 重载一个已经创建的组件实例, 被覆盖新的基础属性:

<script type="text/javascript">
	layui.use(['transfer'], function() {
		var transfer = layui.transfer;

		// 渲染
	    transfer.render({
	    	elem: '#test1'  // 指向容器选择器
	    	,title: ['诗人', '女诗人'] // 穿梭框上方标题
	    	,id: 'poet-transfer' // 设定实例唯一索引, 用于基础方法传参使用
	    });

		 // 可以重载所有基础参数
		transfer.reload('poet-transfer', {
			title: ['新列表1', '新列表2']
		});
	});              
</script>

7. 设定全局默认参数

var transfer = layui.transfer;
 
transfer.set(options); // 设定全局默认参数。options即各项基础参数。

8. 例子

8.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>穿梭框 - layui</title>

		<link rel="stylesheet" href="layui/css/layui.css">
		<script type="text/javascript" src="layui/layui.js"></script>
	</head>
	<body>
		<div id="test1"></div>
		
		<script type="text/javascript">
			layui.use(['transfer'], function() {
  				var transfer = layui.transfer;
  
				// 渲染
			    transfer.render({
			    	elem: '#test1'  // 指向容器选择器
			    	,title: ['诗人', '女诗人'] // 穿梭框上方标题
			    	,id: 'poet-transfer' // 设定实例唯一索引, 用于基础方法传参使用
			    	,showSearch: true
			    	,width: 300
			    	,height: 500
			    	,text: {
					  	none: '无数据' // 没有数据时的文案
					  	,searchNone: '无匹配数据' // 搜索无匹配数据时的文案
					}             
			      	,data: [
			        	{"value": "1", "title": "李白", "disabled": "", "checked": ""}
			        	,{"value": "2", "title": "杜甫", "disabled": "", "checked": "true"}
			        	,{"value": "3", "title": "李清照", "disabled": true, "checked": ""}
			        	,{"value": "4", "title": "李冶", "disabled": "", "checked": ""}
			        	,{"value": "5", "title": "薛涛", "disabled": "", "checked": ""}
			        	,{"value": "6", "title": "刘采春", "disabled": "", "checked": ""}
			      	]
			      	,value: ["5", "6"]
			      	// 对data数据解析。如果data数据不合法, 这个方法可以用来返回合法数据。
		      	  	,parseData: function(res){ 
				    	return {
				      		"value": res.value // 数据值
					      	,"title": res.title // 数据标题
					      	,"disabled": res.disabled  // 是否禁用
					      	,"checked": res.checked // 是否选中
				    	}
				  	}
			      	,onchange: function(data, index){
				    	console.log(data); // 得到当前被穿梭的数据
				    	console.log(index); // 如果数据来自左边index为0, 否则为1
				  	}
			    });

				// 获得右侧数据
				var getData = transfer.getData('poet-transfer'); 
			});              
		</script>
	</body>
</html>

8.2. 效果图

### 关于 Element UI 穿梭 (Transfer) 组件的使用教程 #### 基础配置与初始化 为了在项目中使用 `el-transfer` 组件,需先安装并导入 Element UI 库。对于 Vue 2.x 版本的应用程序来说,这一步骤必不可少[^1]。 ```javascript import { Transfer } from 'element-ui'; Vue.use(Transfer); ``` #### 数据准备 定义好要传递给穿梭数据源以及目标容器中的初始数据: ```html <template> <div class="transfer-demo"> <!-- 定义穿梭 --> <el-transfer v-model="value" :data="data"></el-transfer> </div> </template> <script> export default { data() { const generateData = _ => { let data = []; for (let i = 1; i <= 15; i++) { data.push({ key: i, label: `备选项 ${i}`, disabled: false, // 可选设置某些项不可用 }); } return data; }; return { value: [], // 目标容器内的key集合 data: generateData(), // 所有可转移项目的数组 }; }, }; </script> ``` 上述代码展示了如何创建一个简单的双向选择器,并通过 `v-model` 将已选定的目标侧元素绑定到组件实例的状态变量 `value` 上;同时提供了一个由对象组成的列表作为候选池供用户挑选。 #### 自定义样式与布局调整 可以通过自定义类名来修改默认外观,比如改变宽度、高度等属性以适应页面设计需求[^4]。 ```css .transfer-demo .el-transfer-panel{ width: 300px !important; } ``` 此外还可以利用插槽机制来自定义标题栏、按钮文字等内容,增强用户体验。 #### 高级特性支持 除了基本的选择操作外,Element UI 还提供了诸如过滤搜索、批量迁移等功能的支持,使得复杂场景下的交互更加灵活高效[^3]。 例如可以添加筛选输入帮助快速定位特定条目: ```html <el-transfer filterable :filter-method="filterMethod" :titles="['待选', '已选']" ... > </el-transfer> ``` 其中 `filterMethod` 函数用于控制哪些记录应该显示在当前视图中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值