zoukankan      html  css  js  c++  java
  • Vue计算属性

    github地址:https://github.com/manlili/vue_learn里面的lesson06

    一 计算属性定位

    当一些数据需要根据其它数据变化时,这时候就需要计算属性

    二 $watch实现计算属性

    举个栗子:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>vue计算属性</title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <div class="test">
                a的值是{{a}}
                b的值是{{b}}
            </div>
            <script type="text/javascript">
                var myVue = new Vue({
                    el: ".test",
                    data: {
                        a: 1,
                        b: 0
                    }
                })
                myVue.$watch("a",function () {
                    this.b = this.a+3;
                })
            </script>
        </body>
    </html>

    正常输出时:a的值是1,b的值为0,但是当在控制台输入:

    说明b的数据是根据a变化而变化的

    三 computed实现计算属性

    上面用$watch可以实现计算属性,但是有点麻烦,首先需要定义b,实例化以后给实例绑定一个$watch方法,下面来看一个更简单的方法实现计算属性

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>vue计算属性</title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <div class="test">
                a的值是{{a}}
                b的值是{{b}}
            </div>
            <script type="text/javascript">
                var myVue = new Vue({
                    el: ".test",
                    data: {
                        a: 1
                    },
                    computed: {
                        b: function () {
                            return this.a+3;
                        }
                    }
                })
            </script>
        </body>
    </html>

    上面正常的输出是:a的值是1,b的值是4,但是在控制台输入:

    说明b的数据是根据a变化而变化的

    四 set实现反计算

    多数时候a变化,b跟着a变化,但是有时候我们想让b变化时,a跟着b变化,Vue作者给我们提供了set方法来反计算.

    举个栗子:(get是b获取值,set是给b赋新值)

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>vue计算属性</title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
        </head>
        <body>
            <div class="test">
                a的值是{{a}}
                b的值是{{b}}
            </div>
            <script type="text/javascript">
                var myVue = new Vue({
                    el: ".test",
                    data: {
                        a: 1
                    },
                    computed: {
                        b:{
                            get: function () {
                                return this.a+3;
                            },
                            set: function (newValue) {  //参数不能少
                                this.a = newValue-1;   //a的值变化也会导致b变化
                            }
                        }
                    }
                })
            </script>
        </body>
    </html>

    上面正常的输出是:a的值是1,b的值是4,但是在控制台输入:

  • 相关阅读:
    博客新域名www.tecchen.tech
    [转载]Redis 持久化之RDB和AOF
    基于zookeeper集群的云平台-配置中心的功能设计
    22部漫威电影大合集和观影顺序
    类的嵌套定义、使用以及用头文件实现多个文件编程(匠心之作C++ p105 22 )
    Python的print格式
    Tensorflow2.0+Anaconda + Windows10+cuda10.0+python(转自豌豆代理)
    C语言中用scanf连续输入两个字符类型的问题(转)
    算法和流程图(及N-S流程图)
    git的安装及针对码云的操作(二)
  • 原文地址:https://www.cnblogs.com/lily1010/p/5837580.html
Copyright © 2011-2022 走看看