Сладкое оповещение переопределяет предыдущее оповещение в цикле

я вызываю функцию сладкого оповещения внутри цикла, но сладкое оповещение показывает мне только один раз, я думаю, что оно переопределяет предыдущее сладкое оповещение, bcz, когда я делаю простое оповещение, оно появляется дважды, но сладкое оповещение показывает мне только одно время. Что я хочу сделать, так это настроить оповещение, чтобы показать второе или третье оповещение, когда я нажимаю кнопку «ОК» или кнопку «Отмена», иначе не показывать второе или следующее оповещение в соответствии с повторением цикла. Вот мой код

$.each(data,function(index,elem){

     NotificationPopUpIsApprove();

});

function NotificationPopUpIsApprove(){
     swal({
          title: "Are you sure?",
          text: "The Task "+ task_name + " In Project " + project_name + "is Completed by " + uname ,
          type: "warning",
          confirmButtonText: "Approve!",
          closeOnConfirm: false,
          confirmButtonColor: "#44E753",
          cancelButtonText: "Reasssign!",
          showCancelButton: true,

    },
    function(isConfirm){
      if (isConfirm === true) {
        return true;
      }else{
        return false;
      }
    });

}

Заранее спасибо..


person usama    schedule 21.05.2015    source источник
comment
что определено в данных   -  person Madhuri    schedule 21.05.2015
comment
массив, который я получаю из базы данных, используя запрос jquery ajax   -  person usama    schedule 21.05.2015


Ответы (1)


$.each — это синхронный метод jQuery, поэтому он не будет ждать ответа sweetalert, который вызывает такое поведение.

Учитывая ваше требование, надеюсь, что это поможет.

    var data = ['a', 'b', 'c'];
    var task_name = "sweetalert";
    var project_name = "Something";
    var uname ="SweetAlert"

    $(document).ready(function () {
        NotificationCheck(data[0]);
    });

    function NotificationCheck(noti) {
        is_last = (data.indexOf(noti) + 1 == data.length);

        NotificationPopUpIsApprove(is_last, function (boool) {
            if (boool) { // Do something with response from user
                console.log(noti);
            }

            if (data.indexOf(noti) < (data.length)) { // Inject next element for user response
                next = data.indexOf(noti) + 1;
                NotificationCheck(data[next]);
            }

        });
    }

    function NotificationPopUpIsApprove(is_last, callback) {
        swal({
            title: "Are you sure?",
            text: "The Task " + task_name + " In Project " + project_name + "is Completed by " + uname,
            type: "warning",
            confirmButtonText: "Approve!",
            closeOnConfirm: false,
            confirmButtonColor: "#44E753",
            cancelButtonText: "Reasssign!",
            showCancelButton: true,
        },

        function (isConfirm) {
            if (is_last) { //Close SweetAlert box
                swal.close();
            }
            callback(isConfirm); //Sends user's response
        });

    }
person Shahzaib Ali Khan    schedule 26.05.2015