2012-11-10 4 views
1

내 프로젝트에 CanJS (js 프레임 워크)를 사용하고 있습니다. 그러나 나는 문제가있다. 다음과 같이CanJS 클릭 이벤트가 작동하지 않습니다.

Book = can.Model({ 
    create: 'POST site/book' 
},{}); 

Books = can.Control({ 

     '.gotoPrevPage click' : function(){ 
      b= new Book({name:"newbook1"}); 
      b.save(); 
     } 
}); 

을하고도, 내 html 파일은 다음과 같습니다 :

... 
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> 
<script type="text/javascript" src="js/can.jquery-1.0.7.min.js"></script> 
<script type="text/javascript" src="js/book.js"></script> 
... 
<div class="twopageDoc"> 

    <div class="gotoPrevPage"></div> 

    <div class="leftPage"> 

     <img src="images/1.jpg" /> 

    </div> 

    <div class="rightPage"> 

     <img src="images/2.jpg" /> 

    </div> 

    <div class="gotoNextPage"></div> 

</div> 
... 

을 지금, 내가 클래스 사업부를 클릭하면 다음과 같이

나는 book.js에서 일부 코드를 작성했습니다 "gotoPrevPage"이벤트가 작동하지 않고 오류가 표시되지 않습니다. 하지만 크롬 콘솔을 사용하고 위의 이벤트의 2 줄 코드를 기록하면 POST가 완료되고 작동합니다. 나는 그 이유를 모른다.

답변

4

코드에서 컨트롤러를 초기화하지 않은 것처럼 보입니다. DOM 요소에 도서의 인스턴스를 만들어야합니다.

new Books('.twpopageDoc') 
+0

감사합니다.하지만이 코드는 어디에 있어야합니까? 이 코드를 코드에 추가했지만 아직 작동하지 않습니다. –

+0

can.Control 인스턴스화하는 동안 첫 번째 매개 변수로 jQuery 선택기를 받고 두 번째 매개 변수로 속성을 받아야합니다. 그러나 새로운 서적 ('twpopageDoc') - 'twpopageDoc'클래스가있는 요소를 사용하여 장부 컨트롤을 인스턴스화하는 동안 이미 DOM에 있어야합니다. 그렇지 않으면 can.Control에 의해 이벤트가 catch되지 않습니다. – CoolEsh

관련 문제