0

我遇到了骨幹路由和視圖的問題。當我點擊鏈接並且URL正確時,視圖被正確呈現,但是問題是每當我刷新頁面時,url仍然是相同的,但視圖返回到索引視圖,其中它應該呈現該路線下的視圖導致事件處理不當。refesh上的主幹視圖渲染

這裏的路由器:

var MainRouter = Backbone.Router.extend({ 
    initialize: function() { 
//  homeView.render(); 
    }, 
    routes: { 
     '': 'index', 
     'register': 'register' 
    } 
}); 

var mainRouter = new MainRouter(); 

router.on('route:index', function() { 
    if (htmlObj.hasClass('connected')) { 
     if (htmlObj.hasClass('present')) { 
      profileView.render(); 
     } 
     homeView.render(); 
    } 
}); 

router.on('route:register', function() { 
    signUpView.render(); 
}); 

Backbone.history.start();

,然後在視圖事件我設置triggertrue

Backbone.history.navigate('#/signup', {trigger: true});

因此,這將運行特定路由的功能。 我也嘗試過使用pushState and root,但它在刷新時有同樣的問題,但這次它說那個頁面沒有找到。

感謝

回答

0

請試試這個代碼:

var MainRouter = Backbone.Router.extend({ 
    routes: { 
     "": "index", 
     "register": "register", 
    }, 
    index: function() { 
     if (htmlObj.hasClass('connected')) { 
      if (htmlObj.hasClass('present')) { 
       profileView.render(); 
      } 
      homeView.render(); 
     } 
    }, 

    register: function() { 
     signUpView.render(); 
    } 

}); 

$(document).ready(function() { 
    var r = new MainRouter(); 
    Backbone.history.start(); 
    r.navigate(window.location.hash.replace('#',''),{trigger: true}); 
}) 
+0

我已經嘗試實現這一個,但它並沒有解決問題 – OneScrewLoose 2014-09-18 21:53:37

+0

嘗試添加[瀏覽](HTTP:// backbonejs。 org /#Router-navigate)調用。在正常情況下,它會觸發指定的路線兩次。嘗試放置一些斷點來調試你的代碼。檢查哪個功能在啓動時觸發。也許有HTML標記呈現。 – aleha 2014-09-19 06:45:47