javascript - 如何触发一次警报/swal 函数而不重复触发?

标签 javascript angular typescript

我是 Angular 新手。

我有一个应用程序,其中有两个变量指示金融交易的状态。 这些变量是:tab1TrxMessage,用于存储任何消息tab1TrxStatus,用于指示事务状态:失败、< strong>已成功或正在等待。当交易失败时,我希望用户收到与此类似的 swal 警报/通知:

swal({
       title:'Error!',
       text: 'Warning... Transaction failed!',
       type: 'error',
       confirmButtonText: 'Ok',
       confirmButtonColor: '#ff754f'
     });

目前,我的代码如下所示:

../component.html

<div class="sign-btn text-center">
  <a class="btn btn-lg text-white">
    <span *ngIf="tab1TrxMessage">{{tab1TrxMessage}}</span>
    <span *ngIf="!tab1TrxMessage && tab1TrxStatus != 'Success'">Failed</span>
    <span *ngIf="transactionFailed()">Failed</span>
  </a>
</div>

特别注意transactionFailed()函数...

../component.ts

public transactionFailed() {

    if(this.tab1TrxMessage == 'Failed: Cancelled by User' && this.tab1TrxStatus != 'Success') {

        console.log("You are in transactionFailed!")

        swal({
           title:'Error!',
           text: 'Warning... Transaction failed!',
           type: 'error',
           confirmButtonText: 'Ok',
           confirmButtonColor: '#ff754f'
         });

         return true;
    }

    return false;
}

上面的代码,当交易失败时,会在浏览器控制台中多次产生:You are in transactionFailed!...

console print out

...swal 警报也会反复弹出,其中包含 Warning... Transaction failed!

是否有更好的方法来解决此问题,以便 swal 警报仅在每个失败的交易中显示 ONCE

期待您的帮助。

最佳答案

创建一个计数器,它只会运行您的代码一次。例如。

failedTransactionCntr = 0;
public transactionFailed() {

    if(this.tab1TrxMessage == 'Failed: Cancelled by User' && this.tab1TrxStatus != 'Success') {

        console.log("You are in transactionFailed!")
        if (this.failedTransactionCntr == 0) {
          swal({
           title:'Error!',
           text: 'Warning... Transaction failed!',
           type: 'error',
           confirmButtonText: 'Ok',
           confirmButtonColor: '#ff754f'
         });
         this.failedTransactionCntr ++;
        }
         return true;
    }

    return false;
}

关于javascript - 如何触发一次警报/swal 函数而不重复触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58499243/

相关文章:

Angular 核心/功能/共享模块 : what goes where

javascript - 缩放和平移后fabricJS中的对象对齐

angular - "error TS2694: Namespace ' angular ' has no exported member ' xxx '"升级后@types/angular

javascript - 修改 HTML 文本并替换它

javascript - 如何调用方法 myFunction 来返回(名称) 我已经尝试了很多方法,但它不起作用

javascript - jQuery 宽度 (%) 不会在 windowResize 上停止计算?

reactjs - Typescript 3、React defaultProps 和 passthrough Prop

javascript - 子组件reactjs的动态props

angular - 更改 Angular 6 中的默认 html 模板

typescript - 在/node_modules/angular2/src/testing/matchers.d.ts 中找不到命名空间 Jasmine