vue2.0计算属性

最近遇到一个问题,通过比较复杂的表达式的到一个属性,我想到了可以用计算属性computed.但是没有实现. 举例子demo如下:

b是由a属性得到的,即取a的第一条数据的text值。点击按钮只希望给b重新赋值,但是并不改变a。

<button @click="change">dianji</button>

new Vue({
            el: '#app',
            data: {
                a: [
                    {index: 0, text: 'a',},
                    {index: 1, text: 'b',}
                ]
            },
            computed: {
                b: {
                    get: function () {
                        return this.a[0].text
                    },
                    set: function (val) {
                        //点击按钮只改变b的值,不改变a的值,该如何实现??????
                    }
                }
            },
            methods: {
                //点击按钮只改变b的值,不改变a的值
                change: function () {
                    this.b = 101
                },
            },
        }
    );

此处不知如何实现。想实现此需求的话,是不是不能用computed因为b是依赖于a的,但是a在初始化之后就不能变了。是这个原因吗?
要实现此功能的话,还有个办法是在钩子函数created的时候来取得b的值,以后再给b赋值就不需要依赖a,也不会改变a了吧?
请问各位computed的方法怎么实现,或者还有更好的方法吗?
阅读 2k
1 个回答

之前也遇到过这个问题,结论就是你说的计算属性的值不能脱离其依赖,因为他的值是从get算出来的
从目前来看,你只需要在data中加b,然后再methods的回调中对其重新赋值就可以了,或许你可以再补充下情景。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题