路由到 backbone 相同的路由

Route to backbone same route

我有路由 'availability/exceptions',它路由到函数 availabilityExceptions 并且工作正常:

    return Backbone.Marionette.AppRouter.extend({
        appRoutes: {
            'availability/exceptions(/:key1)(/:value1)': 'availabilityExceptions',
        }
        ...

无论后面发生什么,我都希望能够路由到那个函数 'availability/exceptions'。例如。 'availability/exceptions/some_key/some_val', 'availability/exceptions/some_key/some_val/some_key2/some_val2'、'availability/exceptions/some_key/some_val/some_key2/some_val2/some_key3/some_val3' 等 都应该转到 availabilityExceptions 并通过 'availability/exceptions' 之后的任何内容。这可能吗?

您可以使用 *splat 来完成您的要求。它由一个星号和一个字符串组成。所以你会设置你的路线如下:

appRoutes: {
  'availability/exceptions(/*string)': 'availabilityExceptions',
}

这将匹配 'exceptions' 之后任意数量的 URL 个组件。 'string' 可以替换为您选择的任何其他文本。 exceptions 之后的 URL 部分作为参数传递给您的函数。

因此,如果您导航到 availability/exceptions/some_key/some_val/some_key2/some_val2,您的函数可以按如下方式处理它:

availabilityExceptions: function(enteredURL) {
//enteredURL equals "some_key/some_val/some_key2/some_val2"
}