2013-04-03 4 views
2

Вот мой позвоночник маршрутизатор:Динамически создавать магистральные маршруты

var Router = Backbone.Router.extend({ 
    routes: { 
     "": "home", 
     "home": "home", 
     "about": "about", 
     "works": "works", 
     "work/:id" : "work", 
     "news": "news", 
     "contact": "contact" 
    }, 

    initRoutes: function(e) {  
     this.on('route:home', function() { 
      page.activepage = "home"; 
      page.render(); 
     }); 
     this.on('route:about', function() { 
      page.activepage = "about"; 
      page.render(); 
     }); 
     this.on('route:works', function() { 
      page.activepage = "works"; 
      page.render(); 
     }); 
     this.on('route:work', function(id) { 
      page.activepage = "works"; 
      page.param = id; 
      page.render(); 
     }); 
     this.on('route:news', function() { 
      page.activepage = "news"; 
      page.render(); 
     }); 
     this.on('route:contact', function() { 
      page.activepage = "contact"; 
      page.render(); 
     }); 
    }, 
    initialize: function(){ 
     var self = this; 
     Backbone.history = Backbone.history || new Backbone.History({}); 
     root = "kitchenV3/"+lang; 
     var enablePushState = true; 
     var pushState = !! (enablePushState && window.history && window.history.pushState); 
     Backbone.history.start({ 
      pushState: pushState, 
      root: root 
     }); 
     self.initRoutes(); 
    } 
}); 

Так как вы можете увидеть все мои маршруты в основном делают то же самое (рендеринг контента в зависимости от названия маршрута и параметров). Так как переписать ,, this.on (маршрут: о) ...», чтобы избежать рекурсии

ответ

9

Используйте эти маршруты:?.

routes: { 
    '': 'myFunc', 
    ':mod(/)': 'myFunc', 
    ':mod/:id(/)': 'myFunc' 
}, 
myFunc: function(mod, id) { 
    page.activepage = mod || 'home'; 
    if(id) page.param = id; 
    page.render(); 
} 

И удалить initRoutes Это должно работать нормально

+0

Злая. Tnx bro, вы действительно помогаете мне в эти дни :) – hjuster

+0

Да, я думал, что я уже видел этот код где-то х). – Loamhoof