在非webpack构建的前端项目中使用v-sevlet

在非webpack构建的前端项目中使用v-sevlet

首先引入js文件和css文件

<link rel="stylesheet" href="${ctxStatic}/vue/vue-select.css">
<script type="text/javascript" src="${ctxStatic}/vue/vue-select.js"></script>

使用组件 js代码

Vue.component('v-select', VueSelect.VueSelect)

这样就可以在页面中使用v-select标签了

<v-select v-model="editZc.titleLevel" :options="titleLevel"	key="key" label="value" >
 </v-select>

效果图
vue组件 v-select 效果图

遇到的坑(数据回显问题)

如上面的代码用v-model绑定了titleLevel ,但是死活不给显示正常的值,和原生的select标签不太一样,一般原生的设置select的value值就会定位到相应option标签的value对应的数据,而这个却要设置一个选择的对象(如果options里面是对象)

官网api地址 https://vue-select.org/api/props.html#reduce

另一个问题(数据提交)

由于选中的是一个对象,本来是选中一个字符串的 ,这种需求是很常见的。

解决办法:
先把v-sevlet绑定到一个对象上,然后通过@input=“setSelected” 来对真正需要修改的的值进行修改

最后的完整代码
html代码

<v-select v-model="zcSelected" :options="titleLevel" @input="setSelected" key="key" label="value" code="key"> 
</v-select>

js代码

Vue.component('v-select', VueSelect.VueSelect)
vueApp = new Vue({
	el : "#app",
	data : {
		typeList : data,
		currType : {},		// 当前职称类型
		currTypeIndex:-1,
		currZcIndex :-1,		// 当前的职称
		editType : {},		// 当前编辑的职称类型
		editZc : {},		// 当前编辑的职称
		zcList : [],
		titleLevel:[],
		zcSelected:{}

	},
	methods : {
		selectType : function(item) {
			this.currType = item;
			this.zcList = item.zcList;
			if (this.currType.zcList == undefined) {
				window.top.layer.load(1, {
					shade : [ 0.1, '#fff' ]
				//0.1透明度的白色背景
				});
				$.get(
						"${ctx}/setting/settingZc/getAllJson?typeId="
								+ item.id, function(data) {
							window.top.layer.closeAll();
							vueApp.currType.zcList = data;
							vueApp.zcList = data;
						});
			}
		},
		setSelected(value) {
		     this.editZc.titleLevel = value.key;
		  }
	}
});

function find(arr,key,value){
			for(var i=0;i<arr.length;i++){
				if(arr[i][key] == value)
					return arr[i];
				}
			return null;
		}

回显代码

vueApp.zcSelected =  find(vueApp.titleLevel,'key',‘当前数据库保存的key具体值’);;

总结

1、如果options是一个对象数组(非字符串)那么v-sevlet需要绑定一个对象
2、数据回显需要根据key找到options里面的元素,并设置给绑定的对象上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值