点击编辑以后,newTodos 数据已经变了,但是界面上的显示还是老的,没有出现保存按钮。
你需要在set里面进行操作,并不能直接改变newTodos的值,它的值是通过get得来的;
computed 中,你一直是通过get获取数据的,但你根本没有改变里面todos的值;就像下面回答的使用computed 姿势不对
9 回答1.7k 阅读✓ 已解决
6 回答1.6k 阅读
3 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
3 回答1.1k 阅读
2 回答1.2k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
大概看了一下代码,你这个使用 computed 的姿势不对,computed 一般是用来做 vm 的属性的 getter 来用的,你在 edit 中直接修改 newTodos 是一种反模式,无法享受 vue 具有的响应式特性。
正确的做法是应该在 edit 直接更改 this.todos 就可以了,依赖于 this.todos 的 newTodos 会因为响应式的关系自动变化。
而且还有其他的问题,一般 vue 的 vm 上的属性最好一次性都声明完,并附带默认值,之后如果非要添加新属性的话,使用 Vue.set 来完成而不是直接赋值。