vue computed 修改后视图上显示没有刷新

链接描述

点击编辑以后,newTodos 数据已经变了,但是界面上的显示还是老的,没有出现保存按钮。

阅读 11.8k
3 个回答

大概看了一下代码,你这个使用 computed 的姿势不对,computed 一般是用来做 vm 的属性的 getter 来用的,你在 edit 中直接修改 newTodos 是一种反模式,无法享受 vue 具有的响应式特性。

正确的做法是应该在 edit 直接更改 this.todos 就可以了,依赖于 this.todos 的 newTodos 会因为响应式的关系自动变化。

而且还有其他的问题,一般 vue 的 vm 上的属性最好一次性都声明完,并附带默认值,之后如果非要添加新属性的话,使用 Vue.set 来完成而不是直接赋值。

你需要在set里面进行操作,并不能直接改变newTodos的值,它的值是通过get得来的;


computed 中,你一直是通过get获取数据的,但你根本没有改变里面todos的值;就像下面回答的使用computed 姿势不对

item.is_edit = false
直接定义新的属性 监听不到
用$set

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