(1) vue引入elementui

1.使用npm安装element-ui

npm i element-ui -S

2.在main.js中导入使用vue

import 'element-ui/lib/theme-chalk/index.css' //别忘了导入样式

import ElementUI from 'element-ui'

Vue.use(ElementUI)

 (2) Carousel轮播使用

需要引入的组件除了Carousel还有CarouselItem

import {Carousel,CarouselItem} from 'element-ui';
Vue.use(Collapse);
 Vue.use(CollapseItem);

(3) vue引入jquery、echarts不能直接import之后通过Vue.use()引入。可以通过webpack引入,或搜其他方法。 

(4) 使用v-loading延迟显示内容

1)elementUI中的组件使用方法参考https://element.eleme.cn/#/zh-CN/component/loading#options

(直接看第一个示例代码)

2)使用说明:

step1,在需要loading的元素上添加v-loading

<v-chart v-loading="load1" ref="charts"  :options="reservoirLine" />

并在data中定义该变量load1: false,

step2,在需要触发的方法中设置先设置load1为true(即显示loading加载中)

handleCommand(command) {
this.load1 = true;
。。。
},

step3,数据处理等功能完成时再设置load1为false 

(5) vue-router

step1: 引入vue-router模块,并定义路由,router/index.js里:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: () => import('@/pages/home')
    },
    {
      path: '/map',
      name: 'map',
      component: () => import('@/pages/map')
    }
  ]
})

step2: 引入上述文件并使用

import router from '../../../router/index';

export default {
methods:{
    openMap(){
      this.$router.push('/map');
    }
}
}

** 获取url中的参数:

(6)设置select的value值时,显示的是value而不是对应的label选项名称。

解决方法:value格式问题,接口获取的value可能为字符串,需要转换成number类型

(7)formData输出为空

console.log(formData)只会输出原型
formdata直接输出是没有值的,里面都是私有变量,需要用get方法打印
console.log(formData.get('file')) 

(8)elementui的upload上传组件,上传时发送了多次请求

设置action和auto-upload:

element ui rules规则 elementui用法_ElementUI

auto-upload设置为false后,会导致上传一次文件再点击上传没反应,解决方法:在上传函数中执行clearFiles()

uploadFile(file) {
        this.$refs["fileUpload"].clearFiles();
。。。
      },

另外show-file-list设置为false可去掉自带的文件列表 

(9)表单验证中upload的验证

element对upload的验证不知道怎么用。若想采用element的验证样式(例如标签前面*标注必选),又不想使用element对upload的验证,可以清除element原有验证,再自己写验证方式。

例如:给不想使用原生验证的el-form-item添加ref

<el-form-item label="选择文件:" prop="originFile" ref="upfile">   
            <el-upload
            class="upload-demo"
            action=""
            ref="fileUpload"
            :on-change="uploadFile"
            accept=".pdf"
            :auto-upload="false"
            :show-file-list="false"
            :limit="1">
            <el-button size="small"><i class="el-icon-upload2"></i> 上传文件</el-button>
            <span class="ml-5" v-show="name">{{name}}</span>
          </el-upload>
rules: {
          originFile:[{required: true, message: '请选择文件', trigger: 'change'}]
        },

在自定义的上传功能uplpadFile函数里加一句:this.$refs.upfile.clearValidate();

(10)v-show无效,不能隐藏dom

方法:改用v-if试试

两者区别:

(1)手段:
v-if是动态的向DOM树内添加或者删除DOM元素;
v-show是通过设置DOM元素的display样式属性控制显隐;
(2)编译过程:
v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;
v-show只是简单的基于css切换;
(3)编译条件:
v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译(编译被缓存?编译被缓存后,然后再切换的时候进行局部卸载);
v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留;
(4)性能消耗:
v-if有更高的切换消耗;
v-show有更高的初始渲染消耗;
(5)使用场景:
v-if适合运营条件不大可能改变;
v-show适合频繁切换。

(11)v-for和v-if不能一起用

如果这么写

<el-form-item 
    v-for="(subitem,subindex) in groupItemParamList" 
    :key="subitem.value"
    v-if="。。。"
></el-form-item>

可能报错:Duplicate keys detected: '1'. This may cause an update error

因为v-for和v-if不能一起用

解决:可以v-for和v-show一起用,或选择filter,或搜其他方法