cancel() { this.open = false; }, handleDelete(a,b){ console.log(b); if(b.schoolId != null){ this.$del("/school/"+b.schoolId) .then((res) => { this.$notifyMsg("成功", res.data.msg, "success") this.newList() })
时间: 2024-02-10 14:06:36 浏览: 138
这段代码是一个 Vue.js 组件中的三个方法,分别是 `cancel()`、`handleDelete(a,b)` 和一个匿名方法。
首先,`cancel()` 方法用于关闭当前弹窗,将 `open` 变量设置为 `false`。
接着,`handleDelete(a,b)` 方法用于处理删除操作,该方法接收两个参数 `a` 和 `b`,其中 `b` 是要删除的学校数据对象。
具体来说,该方法调用 Vue.js 封装的 `$del()` 方法,向 `/school/` 接口发送 DELETE 请求,删除指定 `schoolId` 的学校。
最后,如果删除成功,则弹出一条成功提示信息,然后调用 `newList()` 方法刷新页面数据。
另外,还有一个匿名方法,该方法用于在页面中打印 `b` 对象的信息,方便开发者进行调试。
相关问题
electron-dl 我创建了一个类,用于管理下载器,class Downloader { constructor(data, options) { this.data = data; this.options = options; this.item = null; this.onStart = null; this.onProgress = null; this.onCompleted = null; this.data.progress = 0; // 新增 progress 属性 } start() { const win = BrowserWindow.getFocusedWindow(); this.options.onStarted = (item) => { this.item = item; if (this.onStart) { this.onStart(); } }; this.options.onProgress = (progress) => { this.data.progress = progress.percent * 100; // 更新 progress 属性 if (this.onProgress) { this.onProgress(progress); } }; this.options.onCompleted = () => { if (this.onCompleted) { this.onCompleted(); } }; download(win, this.data.dowloadLink, this.options); } pause() { if (this.item) { this.item.pause(); } } resume() { if (this.item) { this.item.resume(); } } cancel() { if (this.item) { this.item.cancel(); } } } 然后,我在外面监听下载器的下载完成状态。 downloader.onCompleted = () => { // 下载完成 mainWindow.webContents.send('consolelog2', item); mainWindow.webContents.send('endDownload', JSON.stringify(downloader)); mainWindow.webContents.send('donwloadStatus', false); }; 我的预加载文件中接受的是: ipcRenderer.on('endDownload', (msg,data) => { const dataTemp=JSON.parse(data) message.open({ type: 'success', content: dataTemp.data.title+'下载完成', duration: 3, top: 200 }); }); 此时如果有两个内容分别是AA、BB在下载,其中AA下载结束,弹出 AA下载完成,但是接着就弹出BB下载完成,我的目的是谁下载完成才弹出,但是这里把我没有下载完成的也弹出提示了,是怎么回事。
根据你的描述,可能是因为你的监听器 `ipcRenderer.on('endDownload', ...)` 注册在了预加载脚本中,而预加载脚本只会在应用程序启动时加载一次,因此可能会导致多个下载完成事件被同时触发,从而导致多个提示框被同时弹出。
为了避免这种情况,你可以考虑将监听器注册到主进程中,然后使用 `webContents.send()` 方法将下载完成的消息发送给渲染进程。这样做的好处是,每次下载完成时,都会触发一次 `ipcMain.on('endDownload', ...)`,从而确保只有一个提示框被弹出。具体实现方式可以参考以下代码:
在主进程中:
```
// 监听下载完成事件
ipcMain.on('endDownload', (event, data) => {
const dataTemp = JSON.parse(data);
const win = BrowserWindow.fromWebContents(event.sender);
win.webContents.send('consolelog2', dataTemp);
win.webContents.send('endDownload', dataTemp);
win.webContents.send('donwloadStatus', false);
});
```
在渲染进程中:
```
// 发送下载请求
const downloader = new Downloader(data, options);
downloader.onCompleted = () => {
ipcRenderer.send('endDownload', JSON.stringify(downloader));
};
// 监听下载完成事件
ipcRenderer.on('endDownload', (event, data) => {
const dataTemp = JSON.parse(data);
message.open({
type: 'success',
content: dataTemp.data.title+'下载完成',
duration: 3,
top: 200
});
});
```
//行单击事件 $('#grid-table tbody').on('dblclick','tr',function(event){ // console.log('Hello world!'); // // console.log(event); // // var obj = $(event.target); // var v = $(event.target);//获取当前点击事件的元素 // console.log($(this)); // console.log($(this).find(".quick-edit").attr("data-url")); // console.log($(this[0]).attr("data-url")); // $(this).find(".quick-edit").click(); $(this).find(".WebxunOpen").click(); }); $(document).on('click', '.WebxunOpen', function(e) { var id=e.target.id; console.log(e.target.id); layer.open({ type: 2,//Page层类型 area: ['85%', '85%'], title: e.target.title, shade: 0.6 ,//遮罩透明度 maxmin: false ,//允许全屏最小化 anim: 0 ,//0-6的动画形式,-1不开启 content: id, id:'LAY_layuipro', // btn: ['yes', 'cancel'], yes: function(index, layero) { window.location.href='back_login.html'; }, cancel: function() { //右上角关闭回调 } }); }); 添加
这是一个JavaScript代码片段,其中包含了一个行双击事件和一个元素单击事件。当用户双击 `#grid-table` 表格中的某一行时,会触发行双击事件,并执行其中的代码。这段代码尝试获取当前行的一个元素 `.WebxunOpen` 的 `id` 属性,并将其作为参数传递给 `layer.open()` 方法,打开一个新的弹出层窗口。在这个弹出层窗口中,用户可以进行某些操作,最终点击“确定”按钮或者关闭弹出层窗口时,会执行相应的回调函数,比如跳转到一个新的页面。
阅读全文