最近遇到一个问题,通过比较复杂的表达式的到一个属性,我想到了可以用计算属性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的方法怎么实现,或者还有更好的方法吗?
1 回答

holdtom
TA贡献1805条经验 获得超10个赞
之前也遇到过这个问题,结论就是你说的计算属性的值不能脱离其依赖,因为他的值是从get算出来的
从目前来看,你只需要在data
中加b
,然后再methods
的回调中对其重新赋值就可以了,或许你可以再补充下情景。
添加回答
举报
0/150
提交
取消