vue常用属性

180 阅读2分钟

动态class

v-bind可以给标签class设置动态的值

  • 格式1:<标签 :class="变量" />
  • 格式2:<标签 :class="{类名1: 布尔值, 类名2: 布尔值}" />
  • 如果布尔值为true,就添加对应的类名 v-bind 是用来动态绑定元素的属性,而class也是元素的属性

动态style

<标签 :style="{css属性名: 值}" />

  1. 可以和静态style共存
  2. 样式中带-属性写成小驼峰
<div id="app">
        <h3 class="title">v-bind-绑定style</h3>
    
       <!-- 把对象的属性名和属性值直接设置到style中 -->
        <div class="box" :style="styleObj">
            1. 绑定对象
        </div>

        <!-- 把数组中的每一个元素(对象),取出来,组成style -->
        <div class="box" :style="styleArr">
            2. 绑定数组
        </div>
        <button @click="hBlack">改成黑色的字</button>
    </div>
    <script>
        // v-bind 是用来动态绑定元素的属性,而style也是元素的属性
        // 目标: 可以通过动绑定style来控制样式 。

        // 方式:
        // 1. 绑定对象
        // 2. 绑定数组

        const vm = new Vue({
            el: "#app",
            // el: document.getElementById("app"),
            data: {
                styleObj: {
                    color:'red',
                    // 如果属性名有-,则要加''
                    'background-color':'blue'
                },
                // 数组中的每一项都是一个对象,其中以键值对的格式设置了style
                styleArr:[ {color:'red','font-weight':'bold'}, {'font-size':'50px'} ]
            },
            methods: {
                hBlack () {
                    // 直接把styleObj中的color设置成black
                    this.styleObj.color = "black"
                   
                }
            }
        })
    </script>

computed计算属性

如果一个结果需要依赖data中的数据,但是需要经过一些逻辑处理,才能得到你想要的数据。此时就可以使用计算属性

{
    data(){},
    methods: {}
    // 声明计算属性
    computed: {
        //属性名字(计算属性名称)
        //属性的值(计算属性处理函数)
        计算属性名1 () {
            // 对依赖的数据进行处理,且进行return
            return 
        },
        计算属性名2 () {
            // 对依赖的数据进行处理,且进行return
            return 
        }
    }
}

computed 是vue的配置选项,它的值是一个对象,其中可定义多个计算属性,每个计算属性就是一个函数。

  • 属性名称: 计算属性的名称

  • 属性的值:计算属性的素材函数

    • 对需要依赖的数据,进行逻辑上的处理
    • 处理完毕后,需要return出去,返回的值就是计算属性的值 计算属性的特点:缓存
      如果计算属性所依赖的数据项并没有发生变化,则就算使用多个计算函数,其函数也只执行一次 因为它把结果缓存起来了。

计算属性的完整写法

<template>
  <div>
    <div>
      <span>名字:</span>
      <input type="text" v-model="full"> //v-model双向绑定
    </div>
  </div>
</template>

<script>
 data () {
    return {
      msg: 'full'
    }
  },
computed: {
    "属性名": {
        set(val){ // 要给元素修改的值,小括号里的参数就是要修改元素的值,语法是赋值给原有的元素
         this.msg = val   //将输入框里的内容赋值给msg元素
        },
        get() { //获取元素的值,语法: return "值" 
        console.log(this.msg);
        return this.msg  
         //这段代码获取的是msg元素的值控制台会打印full
        }
    }
}
</script>

过滤器

过滤器的作用:转换格式, 把数据在显示之前做格式转换

定义的格式

//过滤器属性名
filters: {
      // 自定义属性名称(过滤器名称):属性的值(过滤器处理函数)
      myFilter(value,其它参数){
           return 过滤后的结果
      }

使用的格式

// 不带参数
{{ msg | 过滤器}}   //使用时用|和过滤器名称隔开,名称是在过滤器中自定义的属性名
// 带参数
{{ msg | 过滤器(参数)}}

示例

image.png

  • 它的工作过程就是函数的调用执行过程。
  • 过滤器本质是一个函数:它的接收的参数是格式化之前的数据及格式化的参数,它的返回值是格式化之间的值

vue监听器

作用:可以监听数据(data/computed等)的值的改变。 数据的值有类型:基本数据类型,引用数据类型

<template>
  <div>
    <input type="text" v-model="user.name"> //双向绑定页面内容变动后,会把变动的传回
    <input type="text" v-model="user.age">
  </div>
</template>

<script>
export default {
  data(){
    return {
      user: {
        name: "小白",
        age: 18
      }
    }
  },
  watch: { // 固定属性(设置监听哪些属性)
    user: { // 被监听的属性名
      handler(newVal, oldVal){ // 固定触发此函数
        console.log(newVal);//控制台会打印表单输入的最新数据
        console.log(oldVal)//控制台会打印旧值,小白和18
        //newVal 新值
        //oldVal 旧值
      },
      immediate: false, // 进入页面后马上监听触发
      deep: true 
      // deep深度监听监听复杂类型数据,对象类型或嵌套类型的需要使用深度监听才可以监听的到,普通类型的数据不用深度监听也可以监听的到,
    }
  }
}
</script>