1

나는 다음과 같은 '모듈 패턴을 드러내는'(불구하고) 작은 구현하는 코드가 있습니다jQuery의 document.ready에 노출 모듈 패턴을 어떻게 사용합니까?

(function (CkSpace, $, undefined) { 

    CkSpace.GetLoanValues = function() { 
     var url = "/Home/UpdateAPR"; 

     $.get(url, { Amount: $("#slider").slider("value"), Length: $("#slider2").slider("value") }, function (data) { 
      $("#LoanAmount").html("£"+data.LoanAdvance); 
      $("#TotalToRepay").html("£" + data.LoanGrossRepayable); 
      $("#Representative").html(data.LoanAPR); 
      $("#MonthlyRepayTerm").html(data.LoanTerm); 
      $("#MonthlyFee").html("£" + data.LoanInstalment); 
     }); 
    } 

} (window.CkSpace = window.CkSpace || {}, jQuery)); 

내가 window.CkSpace를 사용하여 내가 중 어떤 루트 네임 스페이스로 전 세계적으로 CkSpace에 액세스 할 수있을 것이라고 인상이었다 그것 공개 회원. 그러나 이것을 $(document).ready()과 함께 사용했을 때 $(document).ready() 내에서 선언하지 않으면 내 CkSpace 네임 스페이스에 액세스 할 수 없었습니다.

누군가 내게 여기에 범위 지정 문제를 설명하고 어쨌든 내 $(document).ready() 함수 안에서 선언하지 않도록 할 수 있습니까?

편집 : 나는 보인다 약간 건망증이되고되었으며 $(document).ready()

+0

이 코드를 수정할 필요가 없으므로 코드를 수정할 수 있습니까? 나는이 코드 + 문서 준비 함수가 제대로 작동하도록하는 데 아무런 문제가 없었다. 오류가 있습니까? – Andy

+0

안녕하세요, Andy. 나는 문제를 해결했다. CkSpace에 접근하기 전에 CkSpace 앞에 윈도우를 붙이지 않았다. 분명히 카페인이 더 필요합니다. – BenM

답변

4

벤의 범위 내에서 액세스 할 때 내가 창

나는 당신의 우려를 이해 한 경우

을 CkSpace 접두어되지 않았다, 이 코드 스 니펫이 도움이 될 수 있습니다.

window.CkSpace = {}; 

(function (CkSpace) { 

    CkSpace.getLoanValues = function() { 
     alert('I provide loans'); 
    } 

} (window.CkSpace || {}, jQuery)); 

window.CkSpace.getLoanValues(); 

바이올린 : 내부 코드 범위와 아무 관련이 없기 때문에 http://jsfiddle.net/GDcVt/

만약 당신이 더 최소한의 확인하시기 바랍니다 수 없습니다. objcet이 함수에 전달되기 전에 objcet이 창 범위에 존재하는지 여부는 확실하지 않습니다.

+0

안녕 Pallab. 창 앞에 접두어를 붙이지 않고 CkSpace에 액세스하려고했습니다. 당신의 코드는 그 덕택을 알게되었습니다. – BenM

+0

기쁜 데 도움이되었습니다. – Pallab