2016-05-02 212 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