Vue 组件封装之 List 列表

  • 一、List 列表
  • 二、使用案例
  • 三、API 使用指南
  • 四、源代码

一、List 列表

组件说明:
实现 List 列表布局排版。

效果展示:

实现的功能:

  1. 在一个 List 中实现左中右三栏布局;
  2. 左边为文本 label 标签,纯文字展示。可通过 require 字段来判断是否必填,必填项则前面会有红色的 *。
  3. 中间为输入值 input 标签。
  4. 右边为图标 img 标签,可通过 icon 属性来判断是否展现图标。并且暴露出该图标的点击事件。

二、使用案例

<template><div><el-list:list="textList"        :result="item"width="80px"/></div>
</template>
<script>
import address from '../assets/address.png';
import right from '../assets/right.png';
export default {data(){return {textList:[{label:"地址",field:"address",icon:address,require:true,onRightClick:this.choseAddress},{label:"学历",field:"education",icon:right,require:true,onRightClick:this.choseEducation},{label:"电话",field:"telephone",require:true},{label:"人口",field:"population",disabled:true,require:true,suffixUnit:"万"},{label:"收入",field:"income",require:true,prefixUnit:"$"},{label:"网址",field:"website"},],item:{address:"",education:"",telephone:"",population:"1000",income:"200",website:"",},}}methods: {choseAddress(){      this.item.address="上海市浦东新区";},choseEducation(){this.item.education="本科";},}
}
</script>

三、API 使用指南

属性 说明 类型 默认值
list 页面展示的静态内容集合 Array []
label 左边展示文本 String
field 中间输入值字段 String
icon 右边的图标 String
onRightClick 点击右边图标时触发事件,为了良好的用户体验,事件绑在在行 Function
require 是否为必输字段 Boolean
disabled 值是 true 或者 disabled 则为反显值,否则为输入值 Boolean false
prefixUnit 输入值前缀,比如输入值表示收入1000。加个前缀 “¥”,则输入值为“¥1000” String
suffixUnit 输入值后缀,比如输入值表示人口1000。加个后缀 “万”,则输入值为“1000万” String
result 对应的字段值集合 Object {}
width 固定左边文本展示的宽度 String

四、源代码

List.vue
文件路径:share/list/List.vue

<template><div><div v-for="(item,index) in list" @click="onRightClick(item)" class="cm-flex cm-ai-fs cm-jc-sb cm-p-02 cm-border-bottom-eee"><div class="cm-flex cm-ai-fs cm-flex-1 cm-mr-02"><div class="cm-fs-030 cm-mr-04" :style="getWidth()"><span class="cm-c-red cm-pt-01" v-if="item.require">*</span>{{item.label}}</div><span class="cm-mr-02 cm-c-999 cm-flex-1" v-if="item.icon||item.disabled"><span v-if="item.prefixUnit">{{item.prefixUnit}}</span>{{result[item.field]}}<span v-if="item.suffixUnit">{{item.suffixUnit}}</span></span><input type="text" v-model="result[item.field]" class="item-input" v-if="!item.icon&&!item.disabled"></div><img :src="item.icon" alt="" class="cm-img-03" v-if="item.icon"></div></div>
</template>
<script>export default {name: "ElList",data(){return{}},//获取子组件传过来的激活tabprops:{list:{type: Array,default: function () {return [];}},result:{type:Object,default:{}},width:{type:String,default:""}},created(){},methods:{getWidth(){if(this.width){return "width:"+this.width}},onRightClick(item){if(item.onRightClick){item.onRightClick();}}}}
</script><style scoped>.item-input{height: 30px;font-size: 0.3rem;flex: 1;border: none;outline: none;background: #fff;}
</style>

index.js
文件路径:share/list/index.js

import List from './List.vue';/* istanbul ignore next */
List.install = function(Vue) {Vue.component(List.name, List);
};export default List;

注:里面用到一些公共样式,公共样式内容比较多,就不贴出来了。有需要的留言。

Vue 组件封装之 List 列表相关推荐

  1. Vue 组件封装之 Content 列表(处理多行输入框 textarea)

    Vue 组件封装之 Content 列表 一.Content 列表 二.使用案例 三.API 使用指南 四.源代码 一.Content 列表 组件说明: 实现 Content 列表布局排版. 效果展示 ...

  2. vue组件封装技巧,如何对vue模块进行功能封装

    如何对vue模块进行功能封装,vue组件封装技巧 当业务不断累加,导致原本干净整洁的代码越来越冗余,各种变量和注释已经让他人望而却步,往往又苦于重构带来的成本,导致诞生很多巨石应用.与其让自己或他人面 ...

  3. Vue 组件封装之 ScrollView 上拉加载更多

    Vue 组件封装之 ScrollView 上拉加载更多 一.ScrollView 上拉加载更多 二.使用案例 三.API 使用指南 四.源代码 一.ScrollView 上拉加载更多 组件说明: 实现 ...

  4. Vue 组件封装之 Questionnaire 问卷调查

    Vue 组件封装之 Questionnaire 问卷调查 前言 一.Questionnaire 组件 二.使用案例 三.API 使用指南 四.源代码 前言 问卷调查表也是目前前端比较常见的开发项目,目 ...

  5. Vue 组件封装之 Search 搜索

    Vue 组件封装之 Search 搜索 一.Search 组件 二.使用案例 三.API 使用指南 四.源代码 一.Search 组件 组件说明: 实现搜索功能. 效果展示: input 输入框背景铺 ...

  6. Vue组件封装,(面试回答)

    在我用vue开发项目的时候,一般我都会用到组件封装,采用组件化的思想进行项目开发,我在搭建一个项目的时候,就会创建一个views目录和一个commen目录和一个feature目录,views目录中放页 ...

  7. Vue 组件封装之 Tab 切换

    Vue 组件封装之 tab 切换 一.Tab 切换组件 二.使用案例 三.API 使用指南 四.源代码 五.总结 一.Tab 切换组件 组件说明: 实现 tab 切换. 效果展示: 实现 tab 切换 ...

  8. Vue组件封装的过程

    Vue组件封装的过程 vue组件的定义 组件(Component)是Vue.js最强大的功能之一 组件可以扩展HTML元素,封装可重用代码 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加 ...

  9. Vue 组件封装、组件传值、数据修改

    Vue 组件封装 封装的意义 当一个页面元素过多或者一个组件在多个页面都会被使用,就可以进行组件封装,可以对单个页面解耦,增加代码的可读性,并且多次使用的组件方便修改,只用修改一个地方就能对用到这个组 ...

最新文章

  1. 【git】【eclipse】免密/SSH 方式连接免登录
  2. vb设计一个由计算机,计算机VB程序的设计第一章.ppt
  3. UI5 registerModulePath
  4. java内部邮件系统_java 图形界面 邮件系统
  5. linux查看python环境_运维笔记linux环境提示python: command not found hello
  6. APP支付报错ALI40247处理方案!
  7. 俞昆20155335《网络对抗》MSF基础应用
  8. Android应用APP: 基于MobileNet和EfficientNet的图像分类模型_调试运行以及打包Tensorflow官方提供的Image classification demo
  9. Android解析ClassLoader(二)Android中的ClassLoader
  10. SqlServer 备份数据库语句
  11. 网络带宽测试工具iperf3(arm<->PC)
  12. ros中odometry数据生成方式与分发去向
  13. 【新书推荐】【2019】电磁理论和等离子体电子学的工程师手册
  14. 计算机专业英文面试,计算机专业面试英文自我介绍
  15. Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
  16. Sketch 68下载 最好的产品设计工具
  17. 线上教学软件哪个平台好?
  18. Sai Life Sciences任命COO;Affamed 在华植入首例景深延长型人工晶状体 | 医药健闻
  19. CocosCreator报:Maximum call stack size exceeded 的问题
  20. 22-07-14 西安 Git 分布式版本控制系统 、代码管理

热门文章

  1. GDUT - 专题学习1 A - Red and Black
  2. 北京理工大学计算机实验一报告,北京理工大学计算机实验一报告表
  3. 关于synchronized的介绍
  4. PSCAD 出现 TRIANG错误
  5. 传奇GeeM2引擎配置生成登陆器配置详细图文教程
  6. Android---LeakCanary源码分析
  7. 查找数组中的指定元素的位置--顺序查找与二分查找
  8. js实现图片预览功能
  9. iOS全埋点解决方案-手势采集
  10. 【Oracle】Oracle简介