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()方法來重新綁定事件哈希 - http://backbonejs.org/#View-delegateEvents

+0

但我檢查視圖對象已經存在與否的基礎上,只有我正在創建新的對象。 – Nageswaran

+0

爲什麼委託?,我正在使用hammerEvents。 – Nageswaran

+0

我打算刪除視圖並重新渲染它。 – Nageswaran

相關問題