關於vue工做中遇到的小坑

前提項目是用腳手架工具生成的,項目用到的技術是vue webpack 和scsscss

1.引用定義組件的時候須要注意的點html

import button  from '../../components/button/Button'  //在引用組件時,不要用html關鍵字做爲名字,這樣在解析的時候它會當成html元素來解析,例如這裏用了button,它會當作html的元素。

2.父組件中定義一個方法,讓子組件中的按鈕點擊的時候調用vue

父組件:
<buttonComponent   @commonalityBtn="ServiceList">{{ service }}</buttonComponent>  
methods: {
ServiceList () {
router.push({
name: 'search',
params: this.ListParameter
})
}
子組件:
<button type="button" @click="commonality"><slot></slot></button>
methods: {
commonality () {
this.$emit('commonalityBtn')
}
}

3.在vue文件裏引入scss文件需注意的點webpack

第一步引入scss文件:import styles from './land.scss'web

第二步將styles變量配置在data裏數組

data () {
return {
styles
}
}

第三步使用樣式:<span :class="styles.list">選擇產品類別</span>工具

 

4.根據不一樣狀況顯示不一樣樣式的時候需注意要寫在數組中例如:this

:class="[{'seek' : shouldShow },{'find':should}]"

 5.vue實現手風琴(個人代碼前提是數據是從父組件傳入子組件的,點擊父組件的導航顯示子組件並實現手風琴)spa

  父組件:component

    vue:

      <selectionGroup v-for="(pulldow,index) in sortName" :childKey="pulldow,index,seq" @groupClick="groupClick"></selectionGroup>

    js:

      data () {

        return {seq:0,}

      },methods{

        groupClick(_index){

            this.seq=_index;

          }

      }

  子組件:

    css:

      .groupBlock{display: block}

     .groupNone{display: none}

    vue:

      <li>
       <span @click="loadGroup()" class="panel-title">點擊查看內容<i class="accordion-title"></i></span>
       <div :id="index" :class="[{'groupNone':index!=seq,'groupBlock':index==seq}]"></div>
      </li>

    js:

      export default {

        methods: {
     loadGroup(){
     this.$emit("testclick",this.index);
     }
      },
       props: {
       childKey: {type: Object},
      index:{type:Number},
      seq:{type:Number}
       },
      }

 6.需求:點擊一下展開,點擊一下合上(前提界面全部的東西都是循環遍歷出來的,而且有多個tab卡,每一個卡里有多個須要顯示隱藏的塊)(代碼前提:點擊的動做是在父組件中,展開收起的部分在子組件中)

子組件:
vue:

<div @click="toggle" class="group-title">
<div>{{section.title}}</div>
</div>
<div v-show='shouldShow'>
  <GroupChild :section='section'></GroupChild>
</div>
js:
export default {
  data(){
return {
shouldShow: false,
   }
  },
 
methods: {
  toggle(){
    this.shouldShow = !this.shouldShow;
  }
  
  props: {
   section: {
  type: Object
   },
  isActive: {
  type: Boolean
  }
  },
  watch: {
// 回顯:修改數據後展開,不然閉合
isActive(val, oldVal) {
if (val && this.section.isChange) {
this.shouldShow = true;
} else {
this.shouldShow = false;
}
}
}

}
父組件:
 
<GroupItem v-for="section in item.sections" :section="section" :isActive="isActive"></GroupItem>
props: {
  isActive: {
  type: Boolean
  }
}

7.Vue中如何讓v-for循環出來的列表裏面的click事件只對當前列表內元素有效<li v-for='item in items' @click="toggle(item)">  <span v-show='item.show'>{{item.content}}</span></li>toggle:function(item){  item.show=!item.show}
相關文章
相關標籤/搜索