
1. 扩展eslintConfig配置
{
"eslintConfig": {
...
"parserOptions": {
...
"ecmaFeatures": {
"legacyDecorators": true
}
}
...
}
}
2. 关闭Vetur提示(项目级别)
{
"vetur.validation.script": false,
}
3. 新建装饰器函数: src\decorators\index.js
export function confirm(message, title, cancel) {
return (target, name, descriptor) => {
console.log('name ', name);
console.log('target ', target);
console.log('descriptor ', descriptor);
const fn = descriptor.value
descriptor.value = function (...reset) {
const result = window.confirm(`${title}\n\n${message}`)
if (result) {
fn.apply(this, reset)
} else {
cancel && cancel.apply(this, [])
}
}
}
}
4. 使用装饰器完成功能
<script>
import { confirm } from "./decorators";
export default {
name: "App",
methods: {
@confirm("确定要删除吗?", "提示", function() {
this.cancel();
})
deleteItem(id) {
console.log("删除成功", id);
},
cancel() {
console.log("取消了");
},
},
};
</script>