2012-02-27 3 views
1

JQuery Mobile을 사용하는 페이지가 있습니다. 내 변수가 정확히 표시되는 시점을 이해하는 데 어려움이 있습니다. 나는 다음과 같은 메모리 공간에로드 된 줄 알았는데. 그러나 나는 오류가 있습니다.JQuery Mobile - JavaScript 가시성

Page.html

<html> 
    <head> 
    <script type="text/javascript" src="app.js"></script> 
    </head> 

    <body> 
    <div id="myPage" data-role="page"> 
     <div data-role="header"> 
     <h1>My App</h1> 
     </div> 

     <div data-role="content"> 
     <div class="ui-grid-a"> 
      <div class="ui-block-a"><input type="button" value="First" onclick="return button1_Click();" /></div> 
      <div class="ui-block-b"><input type="button" value="Second" onclick="return button2_Click();" /></div> 
     </div> 
     </div> 

     <script type="text/javascript"> 
     var currentIndex = 0; 
     function button1_Click() { 
      alert(myCollection.length); 
     } 

     function button2_Click() { 

     } 
     </script> 
    </div> 
    </body> 
</html> 

App.js 나는 "첫"버튼을 클릭

$("#myPage").live("pagecreate", function() { 
}); 

$("#myPage").live("pagebeforeshow", function() { 
}); 

$("#myPage").live("pageshow", function() { 
    var myCollection = loadCollection(); 
    function loadCollection() { 
    // do stuff 
    } 
}); 

, 내 이벤트 : 나는 오류를 설명하기 전에 내가 코드를 보여 드리죠 핸들러가 호출됩니다. 그러나, 나는 다음과 같은 오류가 나타날 수

ReferenceError가 : myCollection가 어떻게이 두 파일 사이의 변수를 공유 할 수있다

내 질문 정의되지 않는 이유는 무엇입니까? 나는 또한 이름 충돌에 관심이 있는데, 그 이유는 내가 시도한 방식으로 메모리 공간을 공유하기를 희망했기 때문이다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

감사합니다.

답변

1

myCollection은 콜백 함수의 범위 내에서 정의되며 따라서 콜백 함수 내에 만 존재합니다. 해당 범위 밖에서는 사용할 수 없습니다. 전역 적으로 사용할 수있게하려면 함수 범위 외부에서 전역 변수로 정의해야합니다.

DOM을 참조하기 때문에 app.js의 코드도 $(document).ready()으로 묶어야합니다.