【发布时间】:2019-09-28 22:34:21
【问题描述】:
我正在尝试根据用户单击“删除”还是“取消”从自定义弹出类返回真或假。
我创建了 popup 类和一个 init 方法来显示弹出窗口。 init 方法只是一个模板字符串,用于设置弹出窗口样式和添加按钮。我创建了一个 getResult() 方法并向取消和删除按钮添加了一些单击事件侦听器。在我的 app.js 文件中,我实例化了一个弹出类并调用 getResult() 方法并尝试将返回值存储在变量“decision”中。
class Popup {
constructor(title, message){
this.title = title;
this.message = message;
this.container = document.querySelector('body');
}
init(){
const popup = `
<div class="popup-wrapper">
<div class="popup bg-white p-1">
<div class="popup-close">X</div>
<div class="popup-content ">
<h2 class="">${this.title}</h2>
<p class="p-1 my-2">${this.message}</p>
<div class="dialogue_buttons my-1">
<button class="btn popup-no" onClick="">Cancel</button>
<button class="btn btn-danger my-1 popup-yes" onClick="">Start Delete</button>
</div>
</div>
</div>
</div>
`;
this.container.innerHTML += popup;
}
getResult(){
document.querySelector('.popup-no').addEventListener('click', () => {
console.log('no');
return false;
})
document.querySelector('.popup-yes').addEventListener('click', () => {
console.log('yes');
return true;
})
}
}
export default Popup
下面是我的 app.js 文件,我在其中设置了弹出窗口。
experienceTable && experienceTable.addEventListener('click', async e => {
const id = e.target.parentElement.parentElement.getAttribute('data-id');
if (e.target.tagName === 'BUTTON') {
console.log(id);
const confirmDelete = new Popup(
'Delete',
'This will permanently delete this experience record.',
()=>db.deleteExperience(id),
id
);
confirmDelete.init();
const decision = await confirmDelete.getResult();
console.log(decision);
}
})
在我的 app.js 文件中,我实例化了一个新的 Popup 并调用了 init 方法。弹出窗口在我的浏览器中正确显示。当我单击取消时,它会按预期控制台记录“否”。当我单击删除时,控制台按预期记录“是”。但是,当我控制台记录变量决策时,我什么也得不到。我希望决定是真还是假,具体取决于用户单击的按钮。
【问题讨论】:
-
您可以尝试我提供的解决方案,如果您发现任何错误,请发表评论。
标签: javascript class