Vue 基础笔记 03

142 阅读1分钟

Vue 基础笔记 03


表单控件绑定

1. 多行文本输入框 textarea

// html 代码
<div id="box">
  <div>
   {{ textArea }}
  </div>
  <textarea v-model="textArea"></textarea>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    textArea:''
  }
})
</script>

2. 复选框 type="checkbox"

// html 代码
<div id="box">
  <div>
   {{ checkbox }} // true 为选中,false 为未选中
  </div>
  <input v-model="checkbox"></input>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    checkbox:'', // 复选框的类型是布尔值
  }
})
</script>

3. 多选框 type="checkbox" 配合 value 使用

// html 代码
<div id="box">
  <div>
   {{ checkboxs }} // 选中的值为 value 值
  </div>
    <input type="checkbox" id="1" value="vue" v-model="checkboxs"> <label>vue</label>
    <input type="checkbox" id="2" value="react" v-model="checkboxs"> <label>react</label>
    <input type="checkbox" id="3" value="angular" v-model="checkboxs"> <label">angular</label> 
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    checkboxs:'', // 多选框的类型是数组
  }
})
</script>

4. 单选框 type="radio" 配合 value 使用

// html 代码
<div id="box">
  <div>
   {{ radio }} // 选中的值为 value 值
  </div>
    <input type="radio" id="1" value="male" v-model="radio"> <label></label>
    <input type="radio" id="2" value="famale" v-model="radio"> <label></label>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    radio:'',
  }
})
</script>

5. 下拉选择框 select

// html 代码
<div id="box">
  <div>
   {{ select }} // 选中的值为 value 值
  </div>
    <select v-model="select">
        <option v-for="item in dataList" :key="item.id">
            {{item.option}}
        </option>
    </select>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    select:'',
    dataList:[
        {
            id:1,
            option:"苏州",
            value:"Su Zhou"
        },{
            id:2,
            option:"上海",
            value:"Shang Hai"
        },{
            id:3,
            option:"南京",
            value:"Nan Jing"
        }
    ]
  }
})
</script>

表单修饰符

1、 .lazy

// 使用 lazy 修饰符,从而转变为使用 change 事件进行同步 也就是失去焦点才能获取到输入框的值
<input v-model.lazy="msg">

2、 .number

// 使用 number 修饰符,将输入值转为数值类型
<input v-model.number="age" type="number">

3、 .trim

// 使用 trim 修饰符,自动过滤输入的首尾空白字符
<input v-model.number="age" type="number">

计算属性 侦听属性 方法

1. 计算属性 computed

任何复杂逻辑,都应当使用计算属性。 (模板中放入太多的逻辑会让模板过重且难以维护)

// html 代码
<div id="box">
  <div>{{ Message }}</div>
  <div>{{ reversedMessage }}</div>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    Message:'Hollo'
  },
  computed: {
      reversedMessage: function () {  
          return this.message.split('').reverse().join('') 
      } 
  }
})
</script>

2. 侦听属性 watch

// html 代码
<div id="box">
  <div>{{ Message }}</div>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    Message:'Hollo'
  },
  watch: {
      Message: function () {  
          return this.message.split('').reverse().join('') 
      } 
  }
})
</script>

3. 方法

// html 代码
<div id="box">
  <div>{{ Message() }}</div>
</div>
// js 代码
<script>
new Vue({
  el: '#box',
  data:{
    Message:'Hollo'
  },
  methods: {
      Message() {  
          return this.message.split('').reverse().join('') 
      } 
  }
})
</script>

4. 总结三者的区别和用法

计算属性: 解决模板过重且难以维护的问题,必须有返回值(return),注重结果,有缓存,同步的

侦听属性: 监听一个值的变化,不用返回值(return),注重结果,可以同步的也可以异步

方法: 主要是事件,用于逻辑计算


  • @Title: Vue基础学习笔记03
  • @Content: Vue
  • @Autor: ling.wang
  • @StudyDate: 2022-02-17
  • @WritingDate: 2022-02-17