vue、elementui组件

6 篇文章 0 订阅
4 篇文章 0 订阅

1.常见问题

注意:如果开发过程中,发现代码没有任何问题,但是前端页面没有出现相应的效果,先刷新浏览器的页面试试
查看一个vue框架搭建的项目中可运行的脚本,全局搜索 scripts,下面就会出现可以运行的脚本

1.1.头像(图片)无法显示

<el-avatar shape="square" :size="90" src="../assets/g.jpg" style="float:left;" :key="1"></el-avatar>

出现问题:这是一个头像的插件,代码写上去,却发现页面无法显示图片,其实原因是:在element组件上使用相对路径,webpack并不会对路径进行处理,所以出现无效路径(被解析为根目录下的images)
解决办法::src=“require(‘…/assets/g.jpg’)”
使用require里面在写上相对路径,就可以显示了

1.2.input输入框相关问题

1.2.1.input值无法删除

<el-input v-model="this.dialogJdCompanyCode" />

如果使用this对来绑定v-model,input的值无法被键盘清除。解决办法:将this去掉

<el-input v-model="dialogJdCompanyCode" />

1.2.2.input的@change事件

当input中的值发生改变(前提:input有值,且值发生改变)并且当前input失去焦点,@change事件才会触发。举个例子,如果input中是"'并且该值没有发生变化,那么失去焦点@chagne事件也不会触发

1.3.select下拉框无法选中的问题

1.3.1.问题出现背景

当使用this.infoForm.quality=""将select之前选中的值清空时,再次选则select的下拉框时,有数据源但是无法选中(并不是所有的都这样,就碰见了一个是这样的,其他的使用这种方式赋值都正常,很尴尬)。
猜测:应该是对象赋值的原因,对象赋值变成非对象赋值就好了
示例:将infoForm.quality变成quality(前提,infoForm.quality、quality都已经在data中进行声明)

<el-form-item prop= 'quality' label="目标库物料品质" >
	<el-select v-model="infoForm.quality" placeholder="请输入">
		<el-option v-for="(item,index) in desReservoirQuality"
		:key="index" :label="item" :value="item" />
	</el-select>
</el-form-item>

注意:若desReservoirQuality是数组,
例如desReservoirQuality = [‘好件’,‘坏件’],则进行v-for="(item,index) in desReservoirQuality"循环时,item就是数组内容(‘好件’、‘坏件’),index就是数组索引(1、2…)

1.3.2.解决办法

使用这种方式来赋值就可以了

this.infoForm = {...this.infoForm, quality: null}

1.3.3.思考

暂时还不知道这俩有啥区别

1.4.loding不起作用

背景:table中使用了:loading,但是不起作用;button中使用了v-loading但是不起作用
解决方式:将table中的:loading变成 v-loading;将button中的v-loading变成:loading,就好了,不知道怎么回事

1.5 el-table中每一列内容过长,不能横向滑动查看所有列

无法查看 table中所有列的内容
解决方式:为每一列设置一个固定宽度就可以横向滑动了,就是width属性
示例:

2.常见功能实现

2.1.table

2.1.1.表格显示数据时,特定行增加背景颜色

使用table组件的row-style属性,用该属性绑定一个函数,在函数中写自己的判断逻辑,注意,函数的返回值必须是一个对象的形式,然后里面是两个字符串;
cell-style和header-cell-style属性用来设置标题、以及标题对应的该列数据居中对齐

<el-table
          :data="tableData"
          class="mb15"
          :cell-style="{ textAlign: 'center' }"
          :header-cell-style="{textAlign: 'center'}"
          :row-style="tableRowClassName"
        >
        
    tableRowClassName(row, rowIndex) {
      if (row.row.warning == 1 || row.row.warning == "1") {
        return { "background-color": "burlywood" };
      }
      if(row.row.warning == 99 || row.row.warning == "99"){
        return { "background-color": "crimson" };
      }
    }

2.1.2.居中显示

标题和内容居中显示

<el-table :data="tableData" style="width: 100%" :cell-style="{'text-align':'center'}" :header-cell-style="{'text-align':'center'}">

某一列居中显示

<el-table-column  prop="" label="" align="center" header-align="center" width="200" />

2.1.3.分页相关

<el-pagination
      background
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page.sync="currentPage"
      :page-sizes="[5, 10, 30, 50, 100, 200]"
      :page-size="pageSize"
      layout="sizes, prev, pager, next, total"
      :total="totalCount"
    >

layout中如果不加total这个属性,页面中不会显示总的数据量,加了才会显示(就是那个 共…条)

2.2.cascader级联显示相关问题

props:用来定义cascader的一些属性,包括懒加载

懒加载:

当点击组件的时候,去查询数据,拿到下拉框展示的数据源;查询的结果都是用Promise对象包装,ElementUI内部会自动对此对象进行处理,并将它显示再组件上(所以不能直接赋值,因为都是异步Promise对象)

出现问题:
因为是懒加载的缘故,所以下拉显示的数据源只有在手动点击的时候才会显示,因而即使给它绑定了值,因为没有数据源的原因,文本框中也不会进行显示,当我们要做编辑这种需要回显的功能时,就需要特殊的处理。
解决办法:
将懒加载的属性设置为false,并手动查询数据源,然后直接给输入框绑定值,就能实现回显的功能了

2.3.数据脱敏/非脱敏显示

import feather from 'vue-icon':导入组件
Vue.use(feather, 'v-icon')

 <div v-if="showName">
              <v-icon style="width: 18px; height: 18px" name="eye" @click.native="offIconClick"></v-icon>
              {{addressInfo.contactName}}
            </div>
            <div v-else>
              <v-icon style="width: 18px; height: 18px" name="eye-off" @click.native="iconClick"></v-icon>
              {{addressInfo.desContactName}}
            </div>
其中<v-icon>中name属性包括 "eye,eye-off",表示数据脱敏(隐藏部分内容)显示、非脱敏(不隐藏内容)显示,并且,会有一个“眼睛”的图标,点击就会触发对应的事件(offIconClick,iconClick)
@click.native:这个好像是vue自带的原生点击事件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Vue ElementUI 拖拽组件是一种基于 Vue.js 和 ElementUI 的可拖拽组件,可以让用户通过鼠标拖拽的方式来移动组件位置,从而实现页面布局的自由调整。该组件可以轻松地集成到 Vue.js 项目,并且具有丰富的配置选项,可以满足不同的需求。同时,ElementUI 拖拽组件还支持多种事件回调和自定义样式,可以让开发者更加灵活地控制组件的行为和外观。 ### 回答2: VueElement UI是目前非常流行的前端开发框架,借助它们可以快速构建出现代化、响应式的Web应用程序。其Element UI提供了丰富的组件,包括拖拽组件。 在Vue使用Element UI的拖拽组件,首先需要引入Element UI库,并在项目注册拖拽组件。然后,在需要使用拖拽功能的页面,通过使用`el-draggable`指令来实现拖拽效果。例如,可以将要拖拽的元素包裹在一个`el-draggable`元素,并设置`v-model`指令来绑定拖拽时元素的位置信息。 基本的拖拽功能只需要在元素上添加`v-draggable`指令即可。拖拽时,元素会根据鼠标的移动而改变位置,同时会触发相应的事件,比如`drag-start`、`drag`和`drag-end`等事件,可以在这些事件自定义拖拽过程的操作。 除了基本的拖拽功能,Element UI的拖拽组件还提供了一些其他的功能选项,比如拖拽的方向限制、边界限制、拖拽时的阴影效果等等。通过在`el-draggable`元素上添加适当的属性配置,可以实现这些扩展功能。 总之,使用VueElement UI的拖拽组件可以大大简化前端开发过程的拖拽功能实现。只需要简单的配置和使用相关指令,就可以实现各种拖拽需求,提升用户体验。 ### 回答3: Vue ElementUI是基于Vue.js的组件库,其包含了一些常用的UI组件,如表格、按钮、输入框等。其也包含了一个拖拽组件,可用于实现在网页拖拽元素的功能。 使用Vue ElementUI的拖拽组件有以下几个步骤: 1. 安装Vue ElementUI:可以使用npm或yarn命令行工具,在项目目录下执行命令`npm install element-ui`或`yarn add element-ui`进行安装。 2. 引入需要使用的组件:在需要使用拖拽功能的组件,使用import语句引入`el-draggable`组件,并在`components`注册。 3. 在模板使用拖拽组件:在模板使用`el-draggable`标签,并为其绑定相应的属性和事件。通常,需要设置`v-model`来绑定要拖拽的元素,还可以设置`group`属性来指定拖拽的组别。 4. 处理拖拽事件:在Vue组件的方法,定义拖拽相关的事件处理函数。例如,可以使用`@start`、`@drag`和`@end`等事件来处理拖拽开始、拖拽进行以及拖拽结束的逻辑。 5. 样式定义:根据需要,可以自定义拖拽元素的样式。可以使用`transition`属性来定义拖拽时的过渡效果,也可以使用`handler`属性来指定只能通过某个元素进行拖拽。 通过以上步骤,就可以在Vue项目使用Vue ElementUI的拖拽组件来实现元素的拖拽功能了。这个组件提供了简洁易用的api,可以帮助开发者快速实现拖拽的效果,提高开发效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值