vue问题总结

1、通过判断绑定class及点击事件总结
<
a :class='[item.status=="yes" ? `btn-primary` : `btn-danger`]' :title="item.status=='yes' ?'取消' :'监测'" @click="item.status=='yes' ?seeManage(item.id,'delete') :seeManage(item.id,'on')"> :class="{'active': navId === 0}" :class="['tab col-sm-4',tab.num2 ? 'current':'disabled']"     <div :class="[{'cbp-spmenu-push-toright':nav.left},'main-content cbp-spmenu-push']"> <div :class="['collapse navbar-collapse',{'in': nav.inMenu}]"> <router-link tag="li" to="/site" v-show="navId == 1"></router-link> <button id="showLeftPush" class="{active:nav.left}" @click="nav.left = !nav.left"></button>

2、vue父组件向子组件传值
  父组件通过:变量名=值的形式传递   如   :loginDialog="loginDialog"
  子组件通过prop属性接收属性,如   
  props: {
      loginDialog: {
      type: Boolean,
      default: false
    }
  },
3、vue子组件向父组件传值
子组件通过  $emit 传值到父组件this.$emit('listenFromChild','close');
 父组件通过v-on监听并获取子组件传过来的值
   v-on:listenFromChild="loginSuc"
     loginSuc (res){
          console.log(111111,res)
          this.loginDialog = false
        }

多个vue页面引用公用js   detect.js
import detect from '@/detect' export default { name : 'automation', mixins: [detect] }
在页面中改变vuex中的userInfo的值
this.$store.state.userInfo = {}

 通过v-if显示隐藏模块时,如果模块中有相同的组件或元素,应给外层容器添加不同的key值或者给所有相同的组件添加不同的key值,key值不同,模块下相同的组件之间也是相对独立的,不会复用

 路由配置  mode: 'history' 不兼容IE9  默认添加#及基路由  解决方法 添加  fallback:false,如下:

let router = new Router({
  'linkActiveClass': 'active',
  routes: routes,
  base: '/',
  mode: 'history',
  fallback:false
})

解决360兼容模式时,提示浏览器版本过低问题

 <!--[if lte IE 8]><script>window.location.href='/version/index.html'</script><![endif]-->
  <script>
    let ms_ie = false;
    let ua = window.navigator.userAgent.toLowerCase();
    let old_ie = ua.indexOf('MSIE');
    let new_ie = ua.indexOf('trident/');
    let is360 = false;
    let append = document.getElementById("append");
    if((old_ie > -1) || (new_ie > -1)) {
      ms_ie = true;
    }
    if(window.navigator.appName.indexOf("Microsoft") != -1) {
      me_ie = true;
    }
    if((window.navigator.mimeTypes[40] || !window.navigator.mimeTypes.length)) {
      is360 = true;
    }
    if(ms_ie) {
      let DEFAULT_VERSION = 8.0;
      let ua = navigator.userAgent.toLowerCase();
      let isIE = ua.indexOf("msie")>-1;
      let safariVersion;
      if(isIE){
        safariVersion =  ua.match(/msie ([\d.]+)/)[1];
      }
      if(safariVersion <= DEFAULT_VERSION ){
        window.location.href='/version/index.html'
      }
    }
  </script>

 vue多项目时,解决不同项目引入不同的ico图标问题

     (在每个项目下创建static文件夹并配置(dev 及 conf文件均需配置))

 new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'src/jiance/index.html',
      chunks: ['jiance'],
      inject: true,
     /* favicon:'src/jiance/static/vision_favicon.ico'*/
      favicon: path.resolve('src/jiance/static/vision_favicon.ico')
    }),
    // copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../src/jiance/static'),
        to: config.dev.assetsSubDirectory,
        ignore: ['.*']
      }
    ])

项目上线后 隐藏掉组件中的代码,只显示打包后的代码,配置方法:config/index.js    

productionSourceMap: true,改为false即可

 需要安装指定版本的插件时 需要在插件名后边加@版本号

如:

npm install vee-validate@2.0.6 --save

 

 
  keyCheck () {//文本框回车 搜索
      /*e = (e) ? e : ((window.event) ? window.event : "");
      let key = e.keyCode?e.keyCode:e.which;
      if( key === 13 ){
        this.getList(this.content);
      }*/
      this.page.currentPage = 1;
      this.getList();
    }

 

vue中的插槽slot使用
父组件:
<menu-manage>
    <div slot="txt">
       <span>此处为在子组件中,name为txt的slot标签要显示的内容</span>
    </div>
</menu-manage>
子组件:
<div>
  <slot name="txt"></slot>//此处显示的为父组件中solot为txt的内容    
</div>

vue中改变element-UI中原生组件的样式,可以使用deep,如:/deep/  .el-input-group_prepend{padding:0}

改变vuex中值的方法:
actions是异步方法   mutations是同步方法,如果需要存储数据,同步的调用mutations中的方法,异步的要调用actions中的方法
(actions内部会再调用mutations中的方法),如果是异步的,则通过this.$store.dispatch()调用actions中的方法。如果为同步则通过this.$store.commit()调用mutations中的方法。

 

posted @ 2018-08-07 16:41  dongxiaolei  阅读(265)  评论(0编辑  收藏  举报