当前位置: 首页 > news >正文

单页面网站入侵虾皮跨境电商app下载

单页面网站入侵,虾皮跨境电商app下载,做旅行的网站,深圳建安公司入职要求在日常项目开发中#xff0c;树状下拉框的需求还是比较常见的#xff0c;但是element并没有这种组件以供使用。在这里#xff0c;小编就基于element如何封装一个树状下拉框做个详细的介绍。通过这篇文章#xff0c;你可以了解学习到一个树状下拉框组件是如何一步一步封装成… 在日常项目开发中树状下拉框的需求还是比较常见的但是element并没有这种组件以供使用。在这里小编就基于element如何封装一个树状下拉框做个详细的介绍。通过这篇文章你可以了解学习到一个树状下拉框组件是如何一步一步封装成功的。话不多说先看效果图封装组件该组件主要基于element的select组件、tree组件及input组件进行二次封装的。组件布局首先我们需要基于这几个组件对我们的组件进行布局话不多说直接上代码selectoptionstree-option        refselectTree      注css添加scoped属性是为了让css只在该组件生效避免样式污染这个时候直接使用肯定是会报错的因为我们组件该传的参数还未传递。组件数据完善上面我们已经完成了布局接下来就是为其丰富数据了因为我们这个组件肯定是复用的因此我们设计数据的时候需要把常用的数据属性提取出来通过props传递接收。我提取的主要有几下几个数据:props:{    /* 配置项 */    props:{      type: Object,      default:(){        return {          value:id,             // ID字段名          label: title,         // 显示名称          children: children    // 子级字段名        }      }    },    /* 选项列表数据(树形结构的对象数组) */    options:{      type: Array,             default: (){ return [] }    },    /* 初始值 */    value:{      default: (){ return null }    },    /* 可清空选项 */    clearable:{      type:Boolean,      default:(){ return true }    },    /* 自动收起 */    accordion:{      type:Boolean,      default:(){ return false }    },    placeholder:{      type:String,      default:(){return 请选择}    }  },大家可能注意到我所有prop字段都给了type属性唯独value没有这是因为在实际使用中下拉框的数据value值可能是字符串(String)也可能是数字(Number)为了项目开发中控制台不报太多无意义的错此处就没有规定其type。接收到prop之后我们就开始对组件进行数据的处理直接上代码placeholder refselectoptionstree-option        refselectTree        :accordionaccordion        :dataoptions        :propsprops        :node-keyprops.value        :default-expanded-keys[]      当数据过多的时候滚动条会出现两条如下所示处理方法如下// 初始化滚动条initScroll(){  this.$nextTick((){    let scrollWrap  document.querySelectorAll(.el-scrollbar .el-select-dropdown__wrap)[0]    let scrollBar  document.querySelectorAll(.el-scrollbar .el-scrollbar__bar)    scrollWrap.style.cssText  margin: 0px; max-height: none; overflow: hidden;    scrollBar.forEach(ele  ele.style.width  0)  })},在mounted中调用该方法就可以了效果如下点击选中数据也渲染显示出来了这个时候我们需要实现点击数据选中功能。思路很简单select组件绑定value值tree组件绑定节点点击事件点击事件中获取value和label将获取的值赋给select组件以及返回给父组件代码如下valueTitle :placeholderplaceholder refselectvalueTitle :labelvalueTitle classoptionstree-option        refselectTree        :accordionaccordion        :dataoptions        :propsprops        :node-keyprops.value        :default-expanded-keysdefaultExpandedKey        node-clickhandleNodeClick        data() {    return {      valueId:this.value,// 初始值      valueTitle:,      defaultExpandedKey:[]    }},// 切换选项handleNodeClick(node){  this.valueTitle  node[this.props.label]//获取label  this.valueId  node[this.props.value]//获取value  this.$emit(getValue,this.valueId)//传值给父组件},这样点击选中功能就实现了但是有个问题点击之后下拉框选项没有隐藏我们只需要再调用一下select组件的blur方法即可实现隐藏数据初始化细心的小伙伴肯定已经发现了上面有一个初始值并且在选择器中初始数据也是必不可少的。实现思路如下watch监听prop中value数据变化将初始值做对应赋值获取初始值对应的label并做对应赋值设置tree组件的默认选中状态设置tree组件的默认展开节点代码如下watch: {    value(){      this.valueId  this.value      this.initHandle()    }},// 初始化值initHandle(){  if(this.valueId){    // 初始化显示label    this.valueTitle  this.$refs.selectTree.getNode(this.valueId).data[this.props.label]         this.$refs.selectTree.setCurrentKey(this.valueId)// 设置默认选中    this.defaultExpandedKey  [this.valueId]// 设置默认展开  } },在mounted中调用执行既可清除选中一般输入框或者选择器都有清除功能我们的组件自然也少不了清除功能实现思路如下给select组件设置clearable属性给select组件添加清除监听事件在监听事件中清除tree组件选中并清除父组件中的值代码如下valueTitle :clearableclearable clearclearHandle :placeholderplaceholder refselect// 清除选中clearHandle(){  this.valueTitle    this.valueId  null  this.defaultExpandedKey  []  this.clearSelected()  this.$emit(getValue,null)},/* 清空选中样式 */clearSelected(){  let allNode  document.querySelectorAll(#tree-option .el-tree-node)  allNode.forEach((element)element.classList.remove(is-current))},筛选数据当tree中数据量过大时我们需要筛选数据实现思路如下给tree组件添加filter-node-method方法添加一个输入框输入筛选的内容监听输入内容变化并调用tree组件的筛选方法代码如下valueTitle :clearableclearable clearclearHandle :placeholderplaceholder refselect      classselectInput      placeholder检索关键字      v-modelfilterTextvalueTitle :labelvalueTitle classoptionstree-option        refselectTree        :accordionaccordion        :dataoptions        :propsprops        :node-keyprops.value            :default-expanded-keysdefaultExpandedKey        :filter-node-methodfilterNode        node-clickhandleNodeClick.selectInput{    padding: 0 5px;    box-sizing: border-box;}filterNode(value, data) {  if (!value) return true;  return data.name.indexOf(value) ! -1;}watch: {    filterText(val) {      this.$refs.selectTree.filter(val);    }},这样一个简单的树状下拉框组件就封装好了。使用组件下面给个简单的使用示例      :propsdefaultProps      :optionstreeData      :valuevalue      :accordiontrue      getValuegetValue($event)      placeholder请选择所属区域    /选中的id{{value}}
http://www.pierceye.com/news/386099/

相关文章:

  • 大良营销网站建设方案广东东莞划定多个高风险区
  • 毕业设计做网站用什么品牌网站建设新闻
  • c 网站开发用的人多吗做it行业招标网站有哪些
  • 招聘做牙技工的网站用html框架做网站
  • 本地wordpress站点上传央企网站群建设
  • 广州免费自助建站开发wordpress公园
  • 淘宝客建网站简单网站建设优化推广
  • 长沙做网站找哪家好毕业设计开题报告网站开发
  • 可以写代码的网站有哪些问题吗网页设计与网站建设期末考试试卷
  • 美工做网站怎么收费网站设计规范
  • 建网站需要注意的问题企业整合营销
  • 2018网站开发的革新wordpress 更新数据库
  • 做现金贷的网站有哪些如何自己建立一个网站
  • 网站制作公司前十名wordpress保存的字体大小
  • 网站设计思路方案海外购物网站哪个最好
  • 哪个网站做课件能赚钱青岛制作网站的
  • 深圳做网站排名公司哪家好html网页设计实训报告范文
  • 外贸网站开发做动画 的 网站有哪些软件下载
  • 中国建设银行吉林省分行官网站wordpress形式
  • 做门户网站可以用的字体黑龙江建设教育网站
  • 怎么做网站建设赚钱知名品牌设计logo解析
  • wordpress全站静态化做公司网站 找谁做
  • 广安网站建设哪家好网站模板下载网站
  • 游戏怎么做充值网站wordpress 预约主题
  • 珠海做网站三年多少钱免费ai写作网站3000字
  • 陕西建设网综合服务中心网站跨境电商怎么搞
  • 青岛做网站需要多少钱怎么在网上卖东西赚差价
  • 永康网站设计新闻门户网站建设方案
  • 个人做网站被骗洛阳电商网站建设公司排名
  • 蒙文网站建设情况汇报设计素材网站照片