vue.js计算机属性01

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <script src="js/vue.js"></script>

</head>

<body>

    <div id="app">

        <p>用插值表达式计算总价:¥{{shop[0].price*shop[0].count + shop[1].price*shop[1].count + shop[2].price*shop[2].count }}</p>

        <!-- 调用计算属性totalprice,调用时不能加括号 -->

        <p>第一次用计算属性计算商品总价:¥{{totalprice}}</p>

        <!-- 第二次调用的时候,由于计算属性所依赖的商品数据没有发生改变,所以第二次调用计算属性的时候,Vue会直接从计算属性的缓存中取出上一次的调用计算属性时的计算结果,而不会重复执行计算属性的代码 -->

        <p>第二次用计算属性计算商品总价:¥{{totalprice}}</p>

        <!-- 方法是没有缓存的,所以调用了多少次,就会重复多少次方法执行方式 -->

        <p>第一次用方法total计算商品总价:¥{{ total() }}</p>

        <p>第二次用方法total计算商品总价:¥{{ total() }}</p>

        <!-- 当修改totalprice和total所依赖的数据后,totalprice最多只执行一次,而total会执行多次 -->

        <p>修改计算属性和方法所依赖的商品数据:<input type="number" v-model= "shop[1].count"></p>

        <p>修改计算属性和方法不依赖的数据title:<input type="text" v-model = "title"></p>

    </div>

    <script>

        let vm = new Vue({

            el:'#app',

            data:{

                title:'购物车',

                shop:[

                    {

                        name:'OPPO R15',

                        price:2999,

                        count:3

                    },

                    {

                        name:'华为P20',

                        price:2699,

                        count:2

                    },

                    {

                        name:'苹果13',

                        price:1999,

                        count:4

                    }

                ]

            },

            computed:{

                // 定义第一具体的totalprice计算机属性

                // 计算机属性就是一个函数

                totalprice:function(){

                    console.log('计算属性totalprice被调用了一次')

                    let sum = 0 //总价

                    for(let i=0; i<this.shop.length;i++){

                        sum = sum + this.shop[i].price * this.shop[i].count

                    }

                    // 计算属性最后必须把计算结果return返回

                    return sum

                }

            },

            methods:{

                total:function(){

                    console.log('方法total被调用了一次')

                    let sum = 0 //总价

                    for(let i=0; i<this.shop.length;i++){

                        sum = sum + this.shop[i].price * this.shop[i].count

                    }

                return sum

                }

            }

        })

    </script>

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值