5.21 Vue笔记

80 阅读3分钟

5.21 Vue学习笔记

v-model指令:默认收集的是输入框的value值

收集表单数据:

    <input type="text" id="zh">
    <input type="radio">
    <input type="password">
    <input type="checkbox">

若type为text等可以输入的,则V-model收集的就是value值 用户输入的就是value值

若type为radio等不能输入,只能选择的,则v-model收集的是value值,且要给标签配置value值

若type为checkbox:分两种情况

1.没有配置value属性,那么收集的就是checked(勾选或未勾选)是一个布尔值
2.配置了value属性
    a:v-model绑定的数据初始值非数组,那么收集的就是checked(勾选或未勾选)是一个布尔值
    b:v-model绑定的数据初始值是数组,那么收集的就是value组成的数组
    

备注:v-model的三个修饰符

  1. lazy:输入框失去焦点之后收集输入框中的数据
  2. number:输入字符串转为有效的数字
  3. trim:过滤输入的首尾空格

过滤器filters:

可以对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)

过滤器的两种注册方式:

//全局注册
Vue.filter(nam,callback)
//局部注册
new Vue({
filters:{

       }
   })

使用过滤器:{{xxx | 过滤器名}} 或v-bind:属性="xxx | 过滤器名,

  1. 多个过滤器之间可以进行串联、过滤器也可以接受额外参数
  2. 并没有改变原来的数据,是产生新的相对应的数据

directives:指令节点里面定义的函数中的this指向的都是window

自定义指令指令函数形式

 directives:{
  //这里的element就是真实的页面DOM元素,binding是本次绑定的所有信息
  //big函数在指令与元素成功绑定时会被调用一次,指令所在模板被重新解析时会调用big函数
      big(element,binding){
        
      }
    }

自定义指令对象形式

  directives:{
     color:{
      //  指令与元素绑定成功时执行
       bind(){},
      //  指令所在元素被插入页面时执行
       inserted(){},
      //  指令所在的模板重新解析时执行
       updated() {
         
       },
     }
    }

组件:就是实现应用中局部功能代码和资源的集合

1.非单文件组件:一个文件包含多个组件
2.单文件组件:一个文件只包含一个组件

组件定义时,组件中不要定义el这个属性,所有的组件都由vm进行管理,最后由vm决定组件服务于哪个容器

render函数

在组件实例中render函数是vue自动调用的,render会传递一个函数进去,render必须有一个返回值,返回的就是传递进去的函数处理之后的数据 也可以直接引进组件 因为是个箭头函数,简化后的形式就是render: h => h(App) ,render函数是怕我们引入的vue是一个精简版的,所以才会有render这个函数帮我们,如果是全部vue的引入的话,就可以直接用template模板进行引入

new Vue({
  // render: h => h(App),
  render(createElement) {
    //return createElement('h1', 'Hello wordl')
     return createElement(App)
  }
}).$mount('#app')

ref属性

1被用来给元素或子组件注册应用信息
2应用在html标签上获取的是真实的DOM元素,应用在组件标签上是获取的组件实例对象
<template>
  <div id="app">
    <h3 v-text="text" ref="title"></h3>
    <button @click="getDOM">点击获取上方DOM元素</button>
    <School ref="sch"></School>
  </div>
</template>

通过this.$refs.xxx可以获取信息

props属性

可以通过props实现父组件向子组件共享数据,并且通过props传递的数据是优先挂载到实例对象身上的,如果想修改props传递过来的数据,

props是只读的,不能直接对props里面的数据进行修改,如果需要修改的话需要在data数据源里面重新声明一个数据,用这个数据接受props里面传递过来的数据,然后修改data里面的数据,

子组件接收数据

export default {
  name: 'School',
  data() {
    return {
      name: 'xxx',
      address: 'xxx',
      myAge: this.age
    }
  },
  props: {
    uname: {
      type: String,
      required: true
    },
    age: { type: Number, required: true },
    sex: String
  }
}

父组件传递数据

  <School uname="张三" :age="20" sex="男"></School>