xm-select

首先作为一名老搬运师傅了  写道这种插件或者是组件分享那肯定是先上链接

https://fly.layui.com/extend/xmSelect/#download

  

xmSelect 是 layui 第三方组件平台

本地数据动态赋值(不讲单选)

<body>
   <div id="demo1" style="width: 218px;" class="xm-select-demo"></div>
</body>
 <script src="${ctx}/assets/Plugins/xm-select.js"></script>
 <script>
 var demo1 = xmSelect.render({
	el: '#demo1', 
	data: [ //默认选中, selected: true   禁用, disabled: true
		{name: '张三', value: 1},
		{name: '李四', value: 2},
		{name: '王五', value: 3},
	]
  })
</script>

页面效果:

远程数据动态赋值

<body>
   <div id="demo2" style="width: 218px;" class="xm-select-demo"></div>
</body>
 <script src="${ctx}/assets/Plugins/xm-select.js"></script>
 <script src="${ctx}/assets/Plugins/axios.min.js"></script>
 <script>
 var demo2 = xmSelect.render({
	el: '#demo2', 
	toolbar: {show: true},
	data: []
})

axios({
	method: 'get',
	url: '${ctx}/ShiftCorrelation/Campus',
}).then(response => {
	var res = response.data;
	demo2.update({
		data: res,
		autoRow: true,
	})
}); 
</script>

页面效果:

update 进行数据的重载  数据源可以通过自带的axios进行获取  同时也得下载axios对应的JS文件并引用    https://github.com/axios/axios/tree/v0.21.1

也可以通过ajax来获取数据源

$.ajax({
  url: '${ctx}/ShiftCorrelation/Campus',
  dataType: 'json',
  type: 'post',
  success: function (data) {
  	demo2.update({//update数据的重载  数据源可以通过ajax来获取或者是它本来自带的axios
			data: data,
			autoRow: true,//换行
		})
  }
});

注意:xm-select赋值对数据格式是有要求的 比如:静态赋值中的{name: '张三', value: 1}和上面的远程数据动态赋值

也就是说从控制器传递的数据格式必须是{name,value}( namevalue的位置前后并没有强制要求)

那么怎么样去规范传递的数据格式???

控制器:

	@ResponseBody
	@RequestMapping(value = "/Campus", produces = "application/json; charset=utf-8")
	private List<CJ> Campus() {
		ArrayList<CJ> arrayList = new ArrayList<CJ>();
		List<CJ> selectvo = ShiftMapper.selCampus();
		arrayList.addAll(selectvo);

		return arrayList;
	}

查询数据:

	<resultMap id="CampusMap" type="com.zh.util.CJ">
		<result column="CampusID" jdbcType="INTEGER" property="value" />
		<result column="CampusName" jdbcType="VARCHAR" property="name" />
	</resultMap>
	<select id="selCampus" resultMap="CampusMap">
		SELECT
		*
		FROM
		b_campus
	</select>

实体类:

public class CJ {

	private String name;
	private Integer value;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getValue() {
		return value;
	}
	public void setValue(Integer value) {
		this.value = value;
	}
	@Override
	public String toString() {
		return "CJ [name=" + name + ", value=" + value + "]";
	}
	public CJ(String name, Integer value) {
		super();
		this.name = name;
		this.value = value;
	}
	public CJ() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}

用实体类来装载数据同时进行规范

同大多下拉框组件一样xm-select也提供了下拉框监听选择

监听代码:

var demo3 = xmSelect.render({
	el: '#demo2', 
	toolbar: {show: true},
	data: [],
	//监听多选下拉框选择
    on: function(data){
		//arr:  当前多选已选中的数据
		var arr = data.arr;
	    console.log(arr);
	}
})

效果演示:

监听选择快捷拿到数据的同时,能更好的解决我们像数据提交数据获取这样的问题。

除了获取选中的值我们还可以判断此次操作是新增还是删除,或者获取此次变化的数据

var demo4 = xmSelect.render({
	el: '#demo2', 
	toolbar: {show: true},
	data: [],
	//监听多选下拉框选择
    on: function(data){
		//arr:  当前多选已选中的数据
		var arr = data.arr;
		//change, 此次选择变化的数据,数组
		var change = data.change;
		//isAdd, 此次操作是新增还是删除
		var isAdd = data.isAdd;
	}
})

上面是选择数据的获取,然后是数据的回填也就是赋值

<body>
   <div id="demo1" style="width: 218px;" class="xm-select-demo"></div>
</body>
 <script src="${ctx}/assets/Plugins/xm-select.js"></script>
 <script>
var demo5 = xmSelect.render({
	el: '#demo1', 
	data: [
		{name: '张三', value: 1},
		{name: '李四', value: 2},
		{name: '王五', value: 3},
	]
})

document.getElementById('demo1-test1').onclick = function(){
  demo5.setValue([ 1,3])
};
</script>

代码运行结果:

注意:从上面那个小案例可以看出赋值的数据必须是数组的形式的,也就是说像我们做下拉框数据的回填时我们要注意以数组形式来进行赋值。  不是数组形式的数据进行赋值浏览器会提示

在组件的操作手册上有默认选中,禁用选项,修改提示。以及样式的修改…………

最后希望变成艺术的不止下拉框  还有屏幕前你的生活

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值