2014-10-02 3 views
1

나는 사용자에게 경고하는 알림 상자에 bootbox을 사용하고 있습니다. 그것은 하나의 js 파일에서 호출되며 그것이 만들어진 공통 함수를 가지고 있습니다. 그래서 내 JS는 다음과 같습니다확인 부트 박스를위한 자바 스크립트 콜백 함수

: 어떻게 확인 대화 상자의 결과를 얻기 위해 콜백 기능을 사용할 수 있습니다

다른 JS 파일의 loadCofirmAlert 기능은 다음과 같습니다
var message = "Do you want to close?"; 

loadConfirmAlert(message); 
if (result) { 
    //do stuff 
} 

:

var loadCofirmAlert = function (message) { 

    bootbox.confirm(message, function (result) { }); 
} 

내가 확신 할 수없는 것은이 결과 값을 호출 함수로 다시 전달하는 방법입니까?

+0

또는 당신이 사용할 수있는 [$ .Deferred] (HTTP를 사용하여 콜백 함수 인 경우 검사를 사용할 수 있습니다

if (callback)callback(result); //if callback defined, call it 

단지 짧은 버전인가 .com/category/deferred-object /). – Regent

답변

3

var message = "Do you want to close?"; 

loadConfirmAlert(message,function(result){ 
    if (result) { 
     //do stuff 
    } 
}); 

var loadCofirmAlert = function (message,callback) { 
    bootbox.confirm(message, function (result) { 
     callback&&callback(result); 
    }); 
} 

UPDATE처럼 시도를

경우

callback&&callback(result) 
//api.jquery :

당신은 또한

(typeof(callback)==="function")&&callback(result) 
+0

이것은 잘 작동합니다 - 콜백 && 콜백 (결과)을 설명 할 수 있습니까? 통사론? –

+0

asnwer 업데이트 됨 – jevgenig

1

당신은 콜백의 내부 문이

bootbox.confirm(message, function (result) { 
    if (result) { 
     //do stuff 
    } 
}); 

당신이 직면하고있는 문제는 당신 loadConfirmAlert(message); 첫 번째 코드에서 result 등이라는 전역 변수를 설정되지 않는 것입니다 경우, result이라고 넣어야 채워지지 않았다.

(그는 아약스와 함께 언급되어 있지만,하지만 당신은 essentialy 같은 문제가 발생하는) 당신의 문제는 아주 잘 여기 How do I return the response from an asynchronous call?에 설명되어

+0

if 문에는 loadCofirm을 호출하는 페이지와 관련이없는 필드가 포함되어 있으므로 결과를 해당 페이지로 다시 전달하고 싶습니까? –

+0

@Ctrl_Alt_Defeat 그런 다음 언급 한 [$ .Deferred] (http://api.jquery.com/category/deferred-object/)를 보거나 jevgenig이 제안한 것처럼'callCheck' 함수를 두 번째 매개 변수로'loadCofirmAlert'에 보냅니다. – Regent