Vue 入门实例

2017-03-03  本文已影响112人  _Wake

一、模块
1.创建Vue模版文件header.vue,定义模块

// header.vue
<template>
  <div class="header">
      I am header
  </div>
</template>
<script type="text/ecmascript-6">
  export {}
</script>

2.父文件中引入、注册、使用

// app.vue
<template>
  <div id="app">
    <v-header></v-header>                                  // 使用
  </div>
</template>

<script type="text/ecmascript-6">
  import header from './components/header/header.vue'      // 引入

  export default {
    components: {
      'v-header': header                                   // 注册
    }
  }
</script>

三、父组件向子组件传值

// 父组件
<template>
  <component-a  msgfromfather="Hello component"> </component-a>
</template>

<script>
import ComponentA from './components/componentA.vue'
export default {
  data () {
  },
  components: { ComponentA },
}
</script>
// 子组件 ComponentA
<template>
  <h1> {{ msgfromfather }} </1h>
</template>

<script>
export default{
  data () {
  },
  props: ['msgfromfather']  
}
</script>
/* Hello component */

四、子组件向父组件传值

// 子组件
<template>
  <button v-on:click="btnClick">Click me!</button>
</template>

<script>
export default{
  data () {
    return {
      msg: 'hello from component A!'
    }
  },
  methods: {
    btnClick: function () {
      this.$emit('child-event', this.msg)
    }
  }
}
</script>
// 父组件
<template>
  <component-a v-on:child-event="listenToBoy"></component-a>
  <p>child tells me :  {{ childWords }} </p>
</template>

<script>
import ComponentA from './components/componentA.vue'
export default{
  data () {
    return {
      childWords: ''
    }
  },
  components: { ComponentA },
  methods: {
    listenToMyBoy: function (msg) {
      this.childWords = msg
    }    
  }
}
</script>
/* Hello component */

五、todolist 知识点总结

// 循环、样式、事件
<li v-for="item in items" v-bind:class="{finished: bool}"  v-on:click="functionName(item)" >
  {{ item.label }}
</li>

// 数据绑定 、回车键触发事件
<input v-model="newItem"  v-on:keyup.enter="addNew"> 

六、css动画

      transition all 0.5s
      backdrop-filter blur(10px)
      &.fade-transition
        opacity 1
        background rgba(7, 17, 27, 0.8)
      &.fade-enter,&.fade-leave
        opacity 0
        background rgba(7, 17, 27, 0)

七、条件样式

// template
<div class="logo" :class="{'highlight': totalCount > 0}">如果数量大于0就渲染这个样式</div>

// style
  .logo
    position: absolute
    ...
    &.highlight
      color #fff  

八、计算属性

// payDesc 作为一个变量在页面中通过 {{payDesc}} 渲染,用于不同状态下,显示不同的内容
computed: {
    payDesc() {
        if (this.totalPrice === 0) {
            return `¥${this.minPrice}元起送`
        } else if (this.totalPrice < this.minPrice) {
            return `还差¥${this.minPrice - this.totalPrice}元起送`
        } else {
            return '去结算'
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读