vue 实现撤回、重做后,撤回操作也触发了watch,怎么办
时间: 2023-12-04 18:05:21 浏览: 33
如果在 Vue 中实现撤回、重做功能后,撤回操作触发了 watch,可以考虑在 data 中增加一个变量来控制是否执行 watch。例如,在 data 中增加一个布尔类型的变量 `isUndoRedo`,当执行撤回、重做操作时,将其设置为 true,执行完操作后再将其设置为 false。在 watch 中判断 `isUndoRedo` 是否为 true,如果是,则不执行 watch 中的代码。代码示例如下:
```javascript
data() {
return {
isUndoRedo: false,
// 其他数据
}
},
watch: {
// 监听数据变化
data: function(newValue, oldValue) {
// 如果 isUndoRedo 为 true,则不执行 watch 中的代码
if (this.isUndoRedo) {
return;
}
// 执行 watch 中的代码
// ...
}
},
methods: {
// 撤回操作
undo: function() {
// 设置 isUndoRedo 为 true
this.isUndoRedo = true;
// 执行撤回操作
// ...
// 操作完成后,将 isUndoRedo 设置为 false
this.isUndoRedo = false;
},
// 重做操作
redo: function() {
// 设置 isUndoRedo 为 true
this.isUndoRedo = true;
// 执行重做操作
// ...
// 操作完成后,将 isUndoRedo 设置为 false
this.isUndoRedo = false;
}
}
```