
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> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)