2012-06-26 4 views
1

나는 다음과 같은보기가 있습니다클릭 이벤트 - 백본

App.HouseListElemView = Backbone.View.extend({ 
    tagName: 'li', 
    events: { 
     'click': function() { 
      App.detailsRouter.navigate('details/' + this.model.id, true);  
     }, 
     'click .btn-compare': 'compare', 
     'click .btn-compare > input': 'toggleCompare', 
    }, 
    // more stuff here... 
}); 

목록의 첫 번째 클릭 이벤트가 파이어 폭스에서 사파리와 크롬 모두에서 트리거하지만되지 않습니다. firefox 11.0을 사용하고 있습니다.

내 이벤트가 잘못 선언 되었습니까?

+0

HTML의 모양은 어떻습니까? 그 사건은 Firefox에서 좋 : http://jsfiddle.net/ambiguous/vKHdc/ –

+0

그것은 재미있다. 그것은 그것 같이 firefox에서 작동한다. 나는 무엇이 잘못 될 수 있는지 모른다. 나의 html은 내부의 다양한 목록 항목을 가진'ul'입니다. – AlexBrand

+0

사용중인 HTML과 일치하도록 바이올린을 조정하거나 템플리트를 포함시키고 질문에'render'를 사용하십시오. 내 첫 번째 추측은 당신이 잘못된 HTML을 생성하고 Firefox가 이벤트 위임을 망쳐 버리는 방식으로이를 수정하고 있다는 것입니다. –

답변

0

예 이렇게 잘못하고 있습니다. 아래의 작업을 수행하며

App.HouseListElemView = Backbone.View.extend({ 
    tagName: 'li', 
    events: { 
     'click': 'navigateTo', 
     'click .btn-compare': 'compare', 
     'click .btn-compare > input': 'toggleCompare', 
    }, 
    navigateTo:function() { 
      App.detailsRouter.navigate('details/' + this.model.id, true); 
     }, 
    // more stuff here... 
}); 

와 클릭 이벤트가 el이다보기의 루트에 바인딩됩니다 방식으로 작동합니다. 따라서 선택한 것을 사용하여 클릭 대상을 지정하십시오. 'click #navigator':'navigateTo'

+0

문서에 따르면 "이벤트는 {"이벤트 선택기 ":"콜백 "} 형식으로 작성됩니다. 콜백 뷰의 메서드 이름이거나 직접 함수 본문 일 수 있습니다. " –

+1

나는 이벤트를 엘에 바인딩하고 싶습니다. 그러나, 나는'click'을'click li'으로 바꾸었고 그것은 작동하기 시작했습니다. – AlexBrand

+0

'events'에서 익명 함수를 사용하는 것이 더 새로운 백본에서 가능합니다. –