0

다음 버튼 클릭은 라우팅 후가 아니라 페이지로드에서만 작동합니다. 1) 기본 페이지 표시 2) "여기를 클릭하십시오"버튼을 클릭하십시오 (이 작동) 3) 다른 페이지를 다시로드하지 않고 내용을 지우고 다른보기 단추를 눌러 경로를 다시 지정하십시오 기본 페이지) 4) 옵션을 클릭하여 기본값으로 돌아갑니다. 5) 다시로드하지 않고 페이지를 다시 그립니다. 6) 여기backbone.hammer.js, 두 번째로 이벤트가 발생하지 않습니다.

코드를입니다)이 작동하지 않습니다 (이하 "여기를 클릭"버튼 을 클릭

var LPRouter = Backbone.Router.extend({ 

    initialize: function (options) { 
     this.pageContent = $('#pageContent'); 
    }, 

    routes: { 
     'AA': 'routerMethod', 
     '': 'defaultMethod' 
    }, 

    defaultMethod: function() { 
     //TODO: Set page title. 

     var self = this; 

     self.pageContent.empty(); 

     if (!self.someView) { 
      self.someView = new SomeView(); 
      self.someView.render(); 
     } 

     self.pageContent.append(self.someView.el); 

     /* 
     Create a view with some link or button which will redirect to routerMethod. 
     */ 
    }, 

    routerMethod : function() { 
     this.pageContent.empty(); 
     /* 
      Create a view with some link or button which will redirect to defaultMethod. 
     */ 

    } 

}); 

var SomeView = Backbone.View.extend({ 

    tagName: "div", 

    className: "someclass", 

    initialize: function (options) { 

    }, 

    hammerEvents: { 
     'tap .innerclass': 'someMethod' 
    }, 

    someMethod: function (e) { 
     alert("did you click me?"); 
    }, 

    render: function() { 
     this.$el.append("<div class='innerclass'><input type='button' value='click here'/></div>"); 
     return this; 
    } 

}); 

답변

1

귀하의 렌더링 새로운 버튼마다, 그래서 이벤트를 생성합니다 기능 -이었다 원래 버튼 요소에 바인딩 된 - 새로운 버튼 요소에 바인딩되지 않습니다. delegateEvents() 메서드를 사용하여 이벤트를 리바 인드 할 수 있습니다. hash-http://backbonejs.org/#View-delegateEvents

+0

뷰 객체가 이미 존재하는지 여부를 확인하고 있습니다. – Nageswaran

+0

그리고 왜 위임합니까?, hammerEvents를 사용하고 있습니다. – Nageswaran

+0

뷰를 제거하고 다시 렌더링 할 계획이었습니다. – Nageswaran