2016-05-02 7 views
0

Я пытаюсь достичь вложенных маршрутов с Backbonejs как это:Вложенные маршруты Магистральная

var Router = Backbone.Router.extend({ 
    routes: { 
     '(/)': 'root', 
     '/a/:id: 'loadA, 
     '/a/:id/:secondId: 'loadA' 
    } 
}) 

Проблема я столкнулся в том, что «/ а /: идентификатор» делает запрос на сервер, и я не» t хочет выполнить другой запрос при переходе в/a /: id /: secondId, но использовать одну и ту же страницу/представление/модель и изменить только подвью.

Кроме того, я хотел бы отслеживать историю, которая, кажется, срабатывает «инициализировать» при возвращении в предыдущее состояние.

Любая идея?

ответ

1

Вы должны управлять государством самостоятельно. я делаю это так

var Router = Backbone.Router.extend({ 
    routes: { 
     '(/)': 'root', 
     '/a/:id: 'loadA, 
     '/a/:id/:secondId: 'loadA' 
    } 
}) 

//root 
function() { 
    loadRootOnce(function() { 
     //done, loads only once 
    }) 
} 

//loadA 
function() { 
    loadRootOnce(function() { 
     loadAOnce(function() { 

     }); 
    }) 
} 

и так далее. Наилучшая практика также использовать посылы и приковать их в конце концов

как $.when(bootstrap()).then(...)

+0

Спасибо, но ресурс загружается Loada с использованием идентификатора, а затем я должен повторно использовать этот ресурс для «/ а /: идентификатор /: secondId ' – fran

+1

да, вот что я сказал с 'и так далее'. потому что вы можете вложить столько вызовов, сколько хотите, с помощью этого шаблона вложенной выборки. все эти функции сохраняют внутренне результаты, поэтому они на самом деле извлекают только один раз (и запускают изменение), и только те, кто еще не загружен, будут загружаться. но каждый возвращает результаты, которые вам нужны. – Luke