写点什么

Vue-6- 计算属性

作者:Python研究所
  • 2022 年 6 月 11 日
  • 本文字数:1163 字

    阅读完需:约 4 分钟

什么是计算属性

理论上在模板的插值表达式中,我们可以进行简单运算,但是在模板表达式中加入太多的逻辑,会让模板太复杂不方便维护。

实践

demo1

当我们想要根据出生年份来计算年龄的时候,我们可以这样做:

代码-HTML

    <div id="app1">       phyger的年龄是多少?       <br>       {{ 2021-Number(birth) }}    </div>
复制代码

代码-JS

<script>        var integer        var app = new Vue({            el: "#app1",            data: {                birth: 1992            }        })    </script>
复制代码

页面效果


如上,2001 年出生的孩子,今年应该是 20 岁。




以上方式,我们在模板插值表达式中进行了计算,现在我们使用 Vue 的计算属性来对它进行替代。

代码-HTML

    <div id="app1">       phyger的年龄是多少?       <br>       {{ age }}    </div>
复制代码

代码-JS

    <script>        var integer        var app = new Vue({            el: "#app1",            data: {                birth: 1992            },            computed: {                age: function(){                    return 2021-this.birth                }            }        })    </script>
复制代码

页面效果

demo2

根据出生日期计算年龄。

代码-HTML

 <div id="app1">   根据出生年份计算年龄!   <input type="datetime" v-model="birth"/>   <br>   {{ age }}  </div>
复制代码

代码-JS

<script>        var app = new Vue({            el: "#app1",            data: {                birth: 1992            },            computed: {                age: function(){                    console.log('computed start...')                    return 2021-this.birth                }            },        })    </script>
复制代码

效果

问题

如果我们使用一个非响应式的对象,比如 Data,那么当 Vue 的属性发生变化时,这个非响应式的对象会变吗?

代码-HTML

 <div id="app1">   根据出生年份计算年龄!   <input type="datetime" v-model="birth"/>   <br>   {{ age }}  </div>
复制代码

代码-JS

<script>    const nowDate = new Date();        var app = new Vue({            el: "#app1",            data: {                birth: 1992            },            computed: {                age: function(){                    console.log('computed start...')                    //return 2021-this.birth          return nowDate.getSeconds()                }            },        })    </script>
复制代码

效果

你会发现,当输入框的值发生变化的时候,Vueage 属性未发生变化。




具体原因我们下节继续分析。

以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

发布于: 刚刚阅读数: 3
用户头像

公众号:Python研究所 2018.10.14 加入

云原生领域技术分享。

评论

发布
暂无评论
Vue-6-计算属性_6月月更_Python研究所_InfoQ写作社区