Vue学习笔记二:Vue基础语法

2019-06-19  本文已影响0人  开发者连小超

1.模板语法

<template>
  <div>
    <span>Message: {{ msg }}</span>
    <span>Message: {{ isOk ? msgA : msgB }}</span>
    <span>{{message.split(',').reverse().join('*') }}</span>
    <span v-once>这个将不会改变: {{ msg }}</span>
    <span v-html="rawHtml"></span>​
  </div>
</template>

2.属性绑定

<template>
  <div>
    <!--  绑定属性 -->
    <p>完整写法:</p><img v-bind:src="imgSrc" width="200px">
    <p>缩写:</p><img :src="imgSrc" width="200px">

    <!--  绑定Class -->
    <!--  【常用】-->
    <div :class="{'font-size-12':isOk}">1.测试绑定Class</div>
    <div :class="['font-size-16','color-blue']">2.测试绑定Class</div>
    <div :class="isOk?'font-size-12':'font-size-16'">3.测试绑定Class</div>
    <div :class="[isOk?'font-size-12':'font-size-16','color-blue']">4.测试绑定Class
    <!-- 【了解】-->
    <div :class="className">1.测试绑定className</div>
    <div :class="{ [className]:isOk }">2.测试绑定className</div>
    <div :class="[classNameA,classNameB]">3.测试绑定className</div>
    <div :class="isOk?classNameA:classNameB">4.测试绑定className</div>

    <!--  绑定style -->
    <!--【了解】 -->
    <div :style="{color:blue,fontSize:font}">1.绑定style样式</div>
    <div :style="styleObject">2.用对象绑定style样式</div>
    <div :style="styleObject">3.用对象绑定style样式</div>
  </div>
</template>
<script>
export default {
  data(){
    return {
        imgSrc:'http://service.chinaports.com/hzsj/haizi_files/photography_img_1539651984131.jpg',
        isOk: true,
        className:'font-size-20',
        classNameA:'font-size-20',
        classNameB:'color-blue',
        blue:'blue',
        font:'20px',
        styleObject:{
            color:'green',
            fontSize:'20px'//vue不支持font-size,中间有-都采用驼峰式
        }
     }
  }
}
</script>
<style>
  .font-size-12 {
    font-size: 12px;
  }
  .font-size-20 {
    font-size: 20px;
  }
  .color-red {
    color: red;
  }
  .color-blue {
    color: blue;
  }
</style>

3.条件渲染 v-if & v-show

<template>
  <div>
    <div v-if="type === 'A'"> A </div>
    <div v-else-if="type === 'B'"> B </div>
    <div v-else-if="type === 'C'"> C </div>
    <div v-else> Not A/B/C</div>

    <div v-show="isLogin">你好:LYC</div>
  </div>
</template>

v-if 和v-show的区别:
v-if: 判断是否加载,可以减轻服务器的压力,在需要时加载。
v-show:调整css dispaly属性,可以使客户端操作更加流畅。

4.列表渲染 v-for

<template>
  <div>
    <ul>
        <li v-for="(item,index) in students" :key="index"> 
            {{item.name}}----------{{item.age}}
        </li>
    </ul>
  </div>
</template>
<script>
export default {
  data(){
    return {
        students:[
          {name:'jspang',age:32},
          {name:'lyc',age:30},
          {name:'Lian',age:21},
          {name:'Xing',age:23}
        ] 
     }
  }
}
</script>

5.双向绑定

<template>
  <div class="box">
    <div>原始文本信息:{{message}}</div>

    <h4>一、文本框</h4>
    <P>input: <input type="text" v-model="message"></P>

    <h4>二、文本域</h4>
    <p>textarea: <textarea cols="30" rows="10" v-model="message"></textarea></p>
    
    <h4>三、多选框绑定一个值</h4>
    <p>checkbox: <input type="checkbox" id="isTrue" v-model="isTrue"></p>
    <p>是否选中: <label for="isTrue">{{isTrue}}</label></p>
    
    <h4>四、多选框绑定一个数组</h4>
    <div>
        <input type="checkbox" id="lyc1" value="LYC" v-model="web_Names">
        <label for="lyc1">LYC</label><br/>
        <input type="checkbox" id="lyc2" value="XTT" v-model="web_Names">
        <label for="lyc2">XTT</label><br/>
        <input type="checkbox" id="lyc3" value="Lian" v-model="web_Names">
        <label for="lyc3">Lian</label>
        <p>选中内容: {{web_Names}}</p>
    </div>
    
    <h4>五、单选按钮绑定数据</h4>
    <input type="radio" id="one" value="男" v-model="sex">
    <label for="one">男</label>
    <input type="radio" id="two" value="女" v-model="sex">
    <label for="two">女</label>
    <p>选中性别:{{sex}}</p>
    
    <h4>六、选择框</h4>
    <select v-model="selected">
      <option disabled value="">请选择</option>
      <option>A</option>
      <option>B</option>
      <option>C</option>
    </select>
    <p>选中: {{ selected }}</p>
    
     <h4>七、多选绑定数组</h4>
    <select v-model="selecteds" multiple style="width: 50px;">
      <option disabled value="">请选择</option>
      <option>A</option>
      <option>B</option>
      <option>C</option>
    </select>
    <p>选中: {{ selecteds }}</p>
</div> 

</template>
<script>
export default {
  data () {
    return {
      message:'Hello World!',
      isTrue:false,
      web_Names:[],
      sex:'',
      selected: [],
      selecteds: []
    }
  }
}
</script>

5.1值绑定

对于单选按钮,复选框及选择框的选项,v-model 绑定的值通常是静态字符串 (对于复选框也可以是布尔值):

<!-- 当选中时,`picked` 为字符串 "a" -->
<input type="radio" v-model="picked" value="a">

<!-- `toggle` 为 true 或 false -->
<input type="checkbox" v-model="toggle">

<!-- 当选中第一个选项时,`selected` 为字符串 "abc" -->
<select v-model="selected">
  <option value="abc">ABC</option>
</select>

但是有时我们可能想把值绑定到 Vue 实例的一个动态属性上,这时可以用 v-bind 实现,并且这个属性的值可以不是字符串。

5.2修饰符

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg" >
<!-- 自动将用户的输入值转为数值类型 -->
<input v-model.number="age" type="number">
<!-- 自动过滤用户输入的首尾空白字符 -->
<input v-model.trim="msg">

6.事件处理

<template>
  <div class="box">
   <button @click="addCounter('hello',$event)">点击+1</button>
</div> 
</template>
<script>
export default {
  data () {
    return {
     counter: 0
    }
  },
  methods: {
    addCounter(param,event) {
      console.log(param)//方法传参
      console.log(event.target)//获取DOM
      this.counter++
    }
  } 
}
</script>

6.1事件修饰符

<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即元素自身触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

6.2按键修饰符

<!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">
<input v-on:keyup.page-down="onPageDown">
<input v-on:keyup.13="submit">

详见 https://cn.vuejs.org/v2/guide/events.html 中的按键修饰符

7.自定义指令directive

这部分官网讲的也比较好理解,可直接查看 https://cn.vuejs.org/v2/guide/custom-directive.html

上一篇下一篇

猜你喜欢

热点阅读