我有相同的条件块,在下面的确认方法中写了两次。我基本上需要以功能工作的方式将逻辑和冗余检查结合起来。
public confirmation = (type: 'Reset' | 'Reject' | 'Approve') => {
if (!this.showMessage
&& ((type === 'Approve' && this.permissions.ViewNotes)
|| (type !== 'Approve'))) {
this.showMessage = true;
return;
}
if (!this.message
&& ((type === 'Approve' && this.permissions.ViewNotes)
|| (type !== 'Approve'))) {
this.messageService.add('Message is required.', 'warning');
return;
}
if (type === 'Approve') {
this.confirmationDialog.show(this.approvalMessage, type, () => this.confirm(type));
} else if (type === 'Reset') {
this.confirmationDialog.show(this.resetMessage, type, () => this.confirm(type));
} else if (type === 'Reject') {
this.confirmationDialog.show(this.rejectMessage, type, () => this.confirm(type));
}
}
唯一的区别是第一个是检查showMessage变量,第二个是检查message变量。默认情况下,它们都是false。showMessage变量的主要用途是控制可见性
用户界面中文本框的。第二个变量comment用于检查用户是否在文本框中输入了任何内容。这是为了确保文本框是强制性的。用户第一次单击按钮时,文本框
自showMessage设置为true后,将变为可见。正如您还可以看到的,代码由于return语句而退出。当用户第二次单击按钮时,第一个块将被跳过,并在第二个块中
它在运行return方法时检查是否输入了注释,代码是否退出。第二个条件是,如果用户没有输入任何文本,则阻止点击。
我试图将这两个块的逻辑结合起来,但实际情况是,它会在第一次点击时检查第二个条件。有什么可能的解决办法?
尝试解决方案
if (!this.showMessage
||!this.message
&& ((type === 'Approve' && this.permissions.ViewNotes)
|| (type !== 'Approve'))) {
this.showMessage = true;
if (!this.message) {
this.messageService.add('Message is required.', 'warning');
}
return;
}
if (type === 'Approve') {
this.confirmationDialog.show(this.approvalMessage, type, () => this.confirm(type));
} else if (type === 'Reset') {
this.confirmationDialog.show(this.resetMessage, type, () => this.confirm(type));
} else if (type === 'Reject') {
this.confirmationDialog.show(this.rejectMessage, type, () => this.confirm(type));
}
}