2016-05-02 245 views
0

我想實現像這樣Backbonejs嵌套的路線:嵌套路由骨幹

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

我現在面臨的問題是,「/ A /:身份證」正在向服務器發送請求和我不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使用ID加載,然後我應該重用「/一個/該資源:ID /:secondId' – fran

+1

是的,那就是我用'等等'說的。因爲您可以使用此嵌套一次提取模式嵌套多次調用。所有這些函數都會在內部保存結果,因此它們實際只提取一次(並觸發更改),只有尚未加載的用戶纔會加載。但每個人都會回報你需要的結果。 – Luke