vue中关于computed的理解及其其他扩展

computed相当于属性的一个实时计算,如果实时计算里关联了对象,那么当对象的某个值改变的时候,同事会出发实时计算

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>
</head>
<body>

<div id="app">
     <parent :childrens="childrens" ></parent>
</div>

<script type="text/javascript">
    var parent = Vue.extend({
        props: {
            childrens: ""
        },
        template: '<div><div>{{age}}</div><div>{{name}}</div></div>',
        data: function () {
            return {
                name: '',
                age: 18
            }
        },
        computed: {
            age: function () {
                return this.childrens.age + 10;
            },
            name: function () {
                return this.childrens.name + "haha";
            }
        }, 
        created: function () {
            var _parent = this.$parent;
            this._set = {};
            this._set = _parent;
            console.log(this._set);
        }
    })

    var app = new Vue({
        el: '#app',
        data: {
            childrens : {
                name: "小强",
                age: 20,
                sex: "男"
            } 
        },
        components: {
            parent, 
        },
    })
</script>
</body>
</html>

打开开发者选项



然后输入代码

app.$data.childrens.age = 60

app.$data.childrens.name = "大强"



另外:当你的模板template这样写的时候会报错:


百度可知:

Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

原来vue模板只能有一个根对象;所以想要正常显示效果,你的用一个div或者别的标签来包裹全部的元素;正常写法见第一段代码

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值