2014-06-13 5 views
1

내 메시지 프롬프트, 오류, 경고 등 플러그인을 구축하려고하는데 메시지 대기열에 넣고 싶습니다.부트 스트랩 : 순서대로 모달 열기

내가 한 방식은 내 HTML에 단일 모달을 포함하는 것이 었습니다. (이렇게하면 '오류', '경고'또는 JSTL을 사용하여 번역 한 것과 같은 메시지 유형에 표준 이름을 포함시킬 수 있습니다.)

function message(messageText, messageType) { 
    $('#message').text(messageText); 
    $('#messageIcon').removeClass(); 
    if (messageType == messageTypes.ERROR) { 
     $('#messageIcon').addClass("glyphicon glyphicon-remove-circle text-danger"); 
     $('#messageHeader').text($(" " + '#ERROR').text()); 
    } else if (messageType == messageTypes.WARNING) { 
     $('#messageIcon').addClass("glyphicon glyphicon-warning-sign text-warning"); 
     $('#messageHeader').text(" " + $('#WARNING').text()); 
    } else if (messageType == messageTypes.INFO) { 
     $('#messageIcon').addClass("glyphicon glyphicon-info-sign text-primary"); 
     $('#messageHeader').text(" " + $('#INFO').text()); 
    } 
    $('#messageModal').modal(); 
} 

을하지만이 단지는 계속 표시하면서 모달을 변경할 수 있습니다, 그래서 표시되는 마지막 메시지가 발생 : 그것을 사용. 난에 그 함수의 코드를 포장 시도했다 : 나는 단지 모달가 숨겨진 상태에있는 경우 기능을 발사 ...하지만 그래도 문제가 해결되지하는 것이 논리적이라고 생각

$('#messageModal').on('hidden.bs.modal', function (e) { 
    //above code 
} 

. 문제를 해결할 방법이 없나요? 아니면 잘못된 방법으로 해결할 수 있습니까?

답변

2

jQuery.queue()를 사용하여 대기열에서 메시징을 구현합니다. 더 많은 정보 확인

https://stackoverflow.com/a/3314877/383474 I'v이 수정없이 함수를 잎이 달린 만 큐에 어떤 메시지를 추가하고,

   var messages = $({}); 
       var messageTypes = {ERROR: 'ERROR', WARNING: 'WARNING', INFO: 'INFO'};      
       $.each([ 
        {message: 'message1', type: 'ERROR'}, 
        {message: 'message2', type: 'WARNING'}, 
        {message: 'message3', type: 'INFO'}], 
        function(i, data) 
        { 
         messages.queue('messages', function() 
         { 
          message(data.message, data.type) 
         }); 
        } 
       ); 

       $("<button>", { 
        text: 'show message', 
        click: function() { 
         showNextQueuedMessage() 
        } 
       }).appendTo('body'); 

       function showNextQueuedMessage() 
       { 
        messages.dequeue('messages');       
       } 
+0

가 어떻게 제안 할 수 있습니다 하나 하나 .. 큐를 시작하는 버튼을 추가 showNextQueuedMessage()를 시작하겠습니까? 'x'버튼을 눌러 모달을 해제 할 때 호출 할 수 있다는 것을 알고 있지만 사용자가 아무 버튼도 누르지 않고 대기열을 시작하는 방법은 무엇입니까? – kacpr

+0

대기열에 메시지를 추가 한 직후에 showNextQueuedMessage()를 호출하면 메시지 하나만 표시됩니다. 하지만 그것은 내가 아약스를 사용하고 있다는 사실과 관련이 있을지도 모르고 그 결과가 하나의 메시지로 사용되는 반면 몇 줄은 두 번째 메시지를 추가하는 것입니다. (아약스 호출 검사는 끝났습니다.) 이로 인해 마지막 하나 (아닌 아약스) 메시지가 표시됩니다. 아약스 호출이 완료 될 때까지 기다리는 것이 도움이되는지 알 수 있습니다. 그러나 어떤 제안도 환영합니다. – kacpr