0

是否可以将路由添加到 Durandal 以在导航中显示它们,但在找不到它们时优雅地处理 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',但会为'test/three'

4

2 回答 2

2

RequireJS 确实提供了一种方法来处理尝试加载模块时发生的错误。您可以为每个模块提供特定的处理程序,也可以设置全局错误处理程序。

有关更多信息,请参阅此链接: http ://requirejs.org/docs/api.html#errors

如果您使用加载失败处理程序,则可以提供应返回的后备或默认模块。- 当然,当与 Durandal 一起使用时,这可能会导致 Durandal 寻找不同的视图,或者取决于 Durandal 何时派生视图 id,您最终可能会得到一个不匹配的视图/视图模型对。

如果您使用全局处理程序,则必须采取一些纠正措施,例如在失败的情况下将窗口位置更改为不同的 url。

于 2013-10-31T12:02:40.050 回答
1

模块加载由处理requirejs,我怀疑是否有一种优雅的方式来处理这种情况。但是,如何添加一个test/wip带有关联test/wip.html文件的空模块,该文件不显示任何内容或类似work in progress.

于 2013-10-31T08:25:02.600 回答