2014-04-02 5 views
0

나는 두란 다르 프로젝트에서 일합니다.durandal는 대화의 응답을 externelize

나는 플러그인 대화 상자 모듈을 사용합니다.

사용자에게 표시 메시지 기능을 쓰고 대화 상자 결과를 반환하고 싶습니다. 예를 들어

:

내 예에서
function isValidFunc() { 

     dialog.show(myHtmlPage).then(function validDialogClosed(result) { 
      return result; 
     } 
} 

var isValid = isValidFunc(); 

, 기능 validDialogClosed는 결과를 반환하지만 isValidFunc는 아무것도 반환하지!

isValidFunc 결과를 반환하고 싶습니다.

isValidFunc 함수 대화 상자를 표시하지 마십시오. 그것을 표시하려면 가 필요합니다.

감사합니다.

답변

0

여기에는 두 가지 문제가 있습니다.

먼저 off isValidFunc가 아무 것도 반환하지 않습니다. return 문은 사용되지 않는 콜백 함수에서 값을 반환합니다.

두 번째로 dialog.show()는 약속을 반환합니다. 이는 비동기입니다. 즉, 콜백 함수가 실행되기 전에 isValidFunc()가 반환됩니다.

isValidFunc()는 대화 상자를 절대 표시 할 수 있지만 직접 결과를 반환 할 수는 없습니다. 도

function isValidFunc() { 
    return dialog.show(myHtmlPage); 
} 

isValidFunc().then(function(dialogResult) { 
    //do something with dialogResult 
}); 
+0

감사합니다,하지만 내가 물었다 전에 나는 그것을 알고

할 수있는 일

,이 같은 약속을 돌려이며이 완료되면 당신은 그것으로 뭔가를 할 수 있습니다. 나는 그것을 할 수있는 방법이 있는지 알고 싶었습니다. 약속을 사용하십시오 - 제가 프로젝트의 다른 장소에서 사용한 방식입니다. 여기에 설명 된대로 정확히 필요합니다. 그러나 매우 일치합니다. – user2783091

+0

나는 당신이 당신의 기능에서 돌아 오기 전에 완료 할 때까지 기다릴 수 있다고 생각하지 않습니다. 당신의 질문은 당신이 일을하는 '적절한'방식을 완전히 이해하면서 그것을 요구하고 있다는 것이 분명하지 않습니다. 당신은 그것을 다시 시도해 볼 수 있습니다. 나는 당신이 당신의 디자인을 다시 생각하고 싶을지도 모른다고 말하고 싶지만. – JamesT