zoukankan      html  css  js  c++  java
  • Vue使用中遇到问题汇总(二)

    1、vue cli使用npm run dev报错cannot get /

      config/index.js里有两个环境:一个是build,一个dev。

      在config/index.js里面修改,build:{assetsPublicPath:'./'};dev里面不需要修改,dev:{assetsPublickPath:'/'}。我本来在window上面开发的,后面移到linux上面,刚开始报错,我就把dev里面的路径改了,不报错,但是浏览器提示cannot GET /,怎么都找不到原因,就把dev路径改回去了,重新再npm run dev一次,就成功了。

    2、stylus的&使用的问题,其实是熟悉css写法的问题,跟css写法大同小异的

     

      这两种不同class就是写的时候有无空格的问题,当第二种你采用有空格的写法的话,是不生效的,因为默认是去子集找那个class=is-active的元素了

    //第一种需要空格
    .el-menu-toggle{
      & .icon-menu{}
    }
    //第二种不能加空格
    .el-menu-item{
      &:hover{
        background-color $--background-color-menu-hover
        font-weight bolder
      }
      &.is-active{
        border-left 3px solid #409Eff;
        background-color $--background-color-menu-active;
        font-weight bolder
      }
    }

    3、使用vue-cli+webpack创建的项目,修改文件名称或者更改文件的位置,运营时会报错,是因为npm项目,在安装依赖(node_nodules)时,会记录当前的文件路径,当修改之后就无法正常启动。

      解决办法:

      (1)删除 node_modules 文件夹(如果修改项目名称,需要在package.json中修改对应的name)

      (2)重新安装依赖 cnpm install

      (3)启动项目 cnpm run dev

    4、axios提交表单数据到后台,采用post方式

    let config = {
        url:'/api/sr/aq/updt',
        method:'post',
        params:JSON.stringify(this.aqForm),//表单数据
        headers:{'Content-Type':'application/json'}
    }
    axios.post(config.url, JSON.stringify(this.aqForm), {headers:{'Content-Type':'application/json'}})
    .then((response)=>{
        this.updateSR = false
    })

      采用config形式

    submitForm(){
        let config={
            url:'/api/submitSR',
            method:'post',
            data:JSON.stringify(this.formData),
            headers:{'Content-Type':'application/json'}
        }
        axios(config).then((response) => {
            if(response.status == 200){
                console.log('success')
            }else{
                console.log('Error Code:' + response.status)
            }
        }).catch((e)=>{
            console.log(e)
        })
    }

      主要就是data参数、和header头信息要设置,这种传递格式就是payload格式

    5、vue获取当前事件的dom元素: var thisDom = e.currentTarget;

      在vue里面,经常用到click,如何获取执行click事件的当前dom对象呢?

    <span @click="refresh($event,item.imgUrl)">事件</span> 
    
    refresh:function(e,src){  
        //vue获取当前事件的dom元素     
        var thisDom = e.currentTarget;  
    }

    6、图片验证码刷新

    <el-form-item v-if="errorCount >= 1 " prop="captchaCode" :rules="rules.required">
        <el-input v-model="login_pwd.captchaCode" class="code-input" placeholder="请输入图形验证码"></el-input>
        <img class="img_valid" @click="rnd = Math.random()" :src="'/api/code/getCaptchaImage?rnd=' + rnd">
    </el-form-item>

      原理:当一个<img>的src改变时,页面会自动刷新这个<img>

      code/getCaptchaImage,即是后台接口地址

    7、方法传值:我们在input中的方法希望获取input的value,怎么获取呢?

      可以通过$event这个对象,通过将$event传入方法

    <input type="text" value="value" @input="change($event)"/>
    
    //我们可以成功的拿到我们希望的值
    change (e) {
      console.log(e.target.value)
      this.value = e.target.value
    }

    8、v-cloak

      如果出现{{}}的短暂出现的情况,可以通过添加v-cloak来处理。

      这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

    9、通过路由元信息meta实现不同路由展现不同页面

    <template>
      <el-container :class="['app uf-col']">
        <template v-if="$route.meta.fullScreen">
          <router-view></router-view>
        </template>
        <template v-else-if="$route.meta.homePages">
          <Nav></Nav>
          <router-view></router-view>
        </template>
        <template v-else>
          <WHeader></WHeader>
          <el-container>
            <WMenu></WMenu>
            <router-view></router-view>
          </el-container>
        </template>
      </el-container>
    </template>
    //系统模块
    export default [
        {
            path: '/login', 
            name: 'login',
            component:() => import('@/views/system/login'),
            meta:{fullScreen:true}
        },
        {
            path:'/register',
            name:'register',
            component:() => import('@/views/system/register'),
            meta:{requireAuth:true,fullScreen:true}
        },
    
    export default [
        {
            path:'/rescue',
            name:'rescue',
            component:() => import('@/views/pages/rescue'),
            meta:{homePages:true}
        }
    ]

      然后我们再看下路由导航守卫,加上homePages:如果路由元信息里面requireAuth为true,或者homePages为true,都不拦截

    router.beforeEach((to, from ,next) => {
        const token = store.getters.userInfo
        if(to.matched.some(record => record.meta.requireAuth || record.meta.homePages)){
            next()
        }else{
            if(token){
                next()
            }else{
                if(to.path==="/login"){
                    next()
                }else{
                    next({path:'/login'})
                }
            }
        }
        return
    })

    10、elementUI的默认提示框样式修改

      今天用element ui ,做了个消息提示,发现提示的位置总是在上面

      可是我想让提示的位置到下面来,该怎么办?

      最后还是看了官方的api

      原来有个自定义样式属性 customClass 设置下就好了

  • 相关阅读:
    简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
    使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例
    关于cas-client单点登录客户端拦截请求和忽略/排除不需要拦截的请求URL的问题(不需要修改任何代码,只需要一个配置)
    javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)
    最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
    基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
    java原生实现屏幕设备遍历和屏幕采集(捕获)等功能
    用java实现简单快速的webservice客户端/数据采集器(支持soap1.1和soap1.2标准,支持utf-8编码)
    javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
    mybatis批量增、删、改(更新)操作oracle和mysql批量写法小记
  • 原文地址:https://www.cnblogs.com/goloving/p/8918477.html
Copyright © 2011-2022 走看看