2013-10-31 46 views
0

是否有可能向Durandal添加路由以便在導航中顯示它們,但在無法找到時會優雅地處理RequireJS錯誤?Durandal:未找到view/viewModel時處理RequireJS錯誤

例如:如果我們有4頁 - 兩個都在進步,但2將完成下個月:

router.map([ 
      { route: ['', 'home'], moduleId: 'test/index', title: 'Almost finished', nav:     
      { route: 'one', moduleId: 'test/one', title: 'In progress', nav: true },    
      { route: 'two', moduleId: 'test/two', title: 'Still to be complete', nav: true },     
      { route: 'three', moduleId: 'test/three', title: 'Validation test', nav: true } 
     ]).buildNavigationModel() 
     .activate(); 

router.mapUnknownRoutes方法將只處理沒有在路由器的路由 - 如:可以給一個優雅對於'test/doesntexist'記錄的消息,但會給出一個JS錯誤(和崩潰的應用程序)爲'test/three'

回答

1

模塊加載由requirejs處理,我懷疑有處理這種情況的一個優雅的方式。但是,如何添加一個空的test/wip模塊與關聯的test/wip.html文件,該文件不顯示任何內容或類似work in progress

2

RequireJS確實提供了一種方法來處理嘗試加載模塊時發生的錯誤。您可以爲每個模塊提供特定的處理程序,也可以設置全局錯誤處理程序。

請參閱此鏈接瞭解更多信息:http://requirejs.org/docs/api.html#errors

如果您使用負載故障處理程序,你可以提供一個回退,或默認,應該返回的模塊。 - 當然,在使用Durandal時,這可能會導致Durandal尋找不同的視圖,或者取決於Durandal何時獲取視圖ID,最終可能會出現不匹配的視圖/視圖模型對。

如果您使用全局處理程序中,你將不得不採取一些糾正措施,如改變窗口的位置,以不同的URL中出現故障的情況。

+0

很高興知道。您是否在Durandal的特定場景中使用了這個功能? – RainerAtSpirit

+0

我正在使用全局處理程序,但此時只記錄錯誤。 –

相關問題