VUE笔记3(绑定样式,计算属性,侦听器监听器,过滤器)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VUE笔记3(绑定样式,计算属性,侦听器监听器,过滤器)相关的知识,希望对你有一定的参考价值。

参考技术A         绑定样式有三种方式:

            首先我们先定义一个样式:

                    .active

                                background-color: orangered;

                                color: white;

                                

            1.第一种方式(推荐):class绑定样式

                    :class绑定样式时,对象的属性名是类选择器名称,属性值返回true,表示添加该选择器

             2.第二种方式,三元运算符法

            3.第三种方法  :style绑定样式

                :style绑定样式时,对象的属性名称是css样式的名称(要使用小驼峰命名法),属性值是具体的样式值

        相比于普通函数计算来说,计算属性的优势是:有缓存,当页面数据发生变化时,所有的方法都要重新执行,当计算属性用到的数据发生变化时,计算属性才会重新执行。

            例如以下案例中的普通方法methods 和 计算属性computed

       1. 侦听器的作用,其实就是当页面数据(属性值)发生改变时,重新发送ajax请求获取新的数据

        一般他有两个参数: nval (最新值)oval(旧值)

        2.侦听对象时,需要开启深度监视

            格式如下: 

                            student:

                                             //开启深度监视

                                             deep:true,

                                             //页面加载完成时,先运行一次(注意:这种情况下,旧值是undefined)

                                             immediate:true,

                                             //定义监视的函数

                                            handler(nval,oval)

                                             // 开启深度监视后,旧值已经没有意义,因为对象是引用类型,

                                            // 对象的属性值已经改了,就没有旧的属性值。

                                            console.log(nval,oval);

                                           

                               

            注意点:1.通过管道符| 调用过滤器,其实就是调用那个方法,将值传进去,再返回新的值

                           2.过滤器可以链式调用,就是之前已经过滤完成的结果,继续传给下一个过滤器,注意顺序

                           3.toFixed(数字)   函数,限定小数后几位的方法

        另外:还可以使用外部调用过滤器的方法

                    在外部写一个filter过滤器的js文件,然后引用,如下

Vue 开发实战基础篇 # 9:合理应用计算属性和侦听器

说明

【Vue 开发实战】学习笔记。

计算属性 computed

  • 减少模板中计算逻辑
  • 数据缓存.
  • 依赖固定的数据类型(响应式数据)
<template>
  <div>
    <p>Reversed message1: " reversedMessage1 "</p>
    <p>Reversed message2: " reversedMessage2() "</p>
    <p> now </p>
    <button @click="() => $forceUpdate()">forceUpdate</button>
    <br />
    <input v-model="message" />
  </div>
</template>
<script>
export default 
  data() 
    return 
      message: "hello vue"
    ;
  ,
  computed: 
    // 计算属性的 getter
    reversedMessage1: function() 
      console.log("执行reversedMessage1");
      return this.message
        .split("")
        .reverse()
        .join("");
    ,
    now: function() 
      return Date.now();
    
  ,
  methods: 
    reversedMessage2: function() 
      console.log("执行reversedMessage2");
      return this.message
        .split("")
        .reverse()
        .join("");
    
  
;
</script>

侦听器 watch

  • 更加灵活、通用
  • watch 中可以执行任何逻辑,如函数节流,,Ajax异步获取数据,甚至操作DOM
<template>
  <div>
     $data 
    <br />
    <button @click="() => (a += 1)">a+1</button>
  </div>
</template>
<script>
export default 
  data: function() 
    return 
      a: 1,
      b:  c: 2, d: 3 ,
      e: 
        f: 
          g: 4
        
      ,
      h: []
    ;
  ,
  watch: 
    a: function(val, oldVal) 
      this.b.c += 1;
      console.log("new: %s, old: %s", val, oldVal);
    ,
    "b.c": function(val, oldVal) 
      this.b.d += 1;
      console.log("new: %s, old: %s", val, oldVal);
    ,
    "b.d": function(val, oldVal) 
      this.e.f.g += 1;
      console.log("new: %s, old: %s", val, oldVal);
    ,
    e: 
      handler: function(val, oldVal) 
        this.h.push("😄");
        console.log("new: %s, old: %s", val, oldVal);
      ,
      deep: true
    ,
    h(val, oldVal) 
      console.log("new: %s, old: %s", val, oldVal);
    
  
;
</script>

computed VS watch

  • computed 能做的,watch都能做,反之则不行
  • 能用 computed 的尽量用 computed

Computed1.vue

<template>
  <div>
     fullName 

    <div>firstName: <input v-model="firstName" /></div>
    <div>lastName: <input v-model="lastName" /></div>
  </div>
</template>
<script>
export default 
  data: function() 
    return 
      firstName: "Foo",
      lastName: "Bar"
    ;
  ,
  computed: 
    fullName: function() 
      return this.firstName + " " + this.lastName;
    
  ,
  watch: 
    fullName: function(val, oldVal) 
      console.log("new: %s, old: %s", val, oldVal);
    
  
;
</script>

Watch1.vue

<template>
  <div>
     fullName 

    <div>firstName: <input v-model="firstName" /></div>
    <div>lastName: <input v-model="lastName" /></div>
  </div>
</template>
<script>
export default 
  data: function() 
    return 
      firstName: "Foo",
      lastName: "Bar",
      fullName: "Foo Bar"
    ;
  ,
  watch: 
    firstName: function(val) 
      this.fullName = val + " " + this.lastName;
    ,
    lastName: function(val) 
      this.fullName = this.firstName + " " + val;
    
  
;
</script>

以上是关于VUE笔记3(绑定样式,计算属性,侦听器监听器,过滤器)的主要内容,如果未能解决你的问题,请参考以下文章

Vue计算属性及样式绑定

Vue计算属性及样式绑定

Vue2.0笔记——计算属性和侦听器

vue基础——计算属性和侦听器

vue2

Vue学习计划(基础二)-模板语法,计算属性,侦听器