vue.js计算机属性01

简介: 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>
相关文章
|
29天前
|
JavaScript
vue实例的data属性,可以在哪些生命周期中获取到
Vue实例的`data`属性在`beforeCreate`、`created`和`beforeMount`阶段已可访问。此时,虽能使用数据,但事件监听和DOM操作不可行。`beforeCreate`时数据可访问,但未初始化观测和事件;`created`时数据完全可用,但未挂载到DOM;`beforeMount`时仍可访问数据,DOM挂载未开始。
31 3
|
1月前
|
缓存 JavaScript
如何在Vue Router中使用计算属性和侦听器呢
如何在Vue Router中使用计算属性和侦听器呢
24 2
|
1月前
|
缓存 JavaScript 容器
Vue之计算属性(computed)
Vue之计算属性(computed)
|
4天前
|
JavaScript
Vue控制是否禁用disabled属性
Vue控制是否禁用disabled属性
10 1
|
18天前
|
缓存 JavaScript API
「Vue3系列」Vue3 计算属性(computed)、监听属性(watch)
在 Vue 3 中,计算属性(Computed Properties)是一种强大的功能,它允许你声明一个依赖于其他响应式数据属性的属性,并且这个属性的值会根据其依赖的数据的变化而自动更新。计算属性是基于它们的依赖关系进行缓存的,只有在它的相关依赖发生改变时才会重新求值。
29 0
|
19天前
|
缓存 JavaScript
vue中的计算属性和侦听属性的区别
vue中的计算属性和侦听属性的区别
N..
|
1月前
|
缓存 JavaScript 前端开发
Vue.js的计算属性
Vue.js的计算属性
N..
11 2
N..
|
1月前
|
JavaScript 前端开发 数据处理
Vue.js的过滤器和监听属性
Vue.js的过滤器和监听属性
N..
19 1
|
1月前
|
JavaScript
Vue之监视属性(watch)
Vue之监视属性(watch)
|
1天前
|
JavaScript 前端开发
【vue】iview如何把input输入框和点击输入框之后的边框去掉
【vue】iview如何把input输入框和点击输入框之后的边框去掉
7 0