Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多条主干路由上的相同事件_Javascript_Backbone.js_Methods_Routes - Fatal编程技术网

Javascript 多条主干路由上的相同事件

Javascript 多条主干路由上的相同事件,javascript,backbone.js,methods,routes,Javascript,Backbone.js,Methods,Routes,我看到一些帖子提到了一个类似的问题,但不是完全相同的事情 下面是我的routes文件顶部的一个片段 我想知道我使用的方法是否可以在每条路线上调用全局事件。我使用的事件是非常标准、简单的事件,比如清除#items容器 如您所见,我正在调用构造函数中的“all”事件,然后指向routes文件中定义的几个方法 我的问题是,假设我想在几个屏幕上显示相同的全球事件;比如说,所有的“目录”屏幕。我一直在做一些奇怪的和公认的黑客把戏,以获得ou @routeName = route.split(":")[1]

我看到一些帖子提到了一个类似的问题,但不是完全相同的事情

下面是我的routes文件顶部的一个片段

我想知道我使用的方法是否可以在每条路线上调用全局事件。我使用的事件是非常标准、简单的事件,比如清除#items容器

如您所见,我正在调用构造函数中的“all”事件,然后指向routes文件中定义的几个方法

我的问题是,假设我想在几个屏幕上显示相同的全球事件;比如说,所有的“目录”屏幕。我一直在做一些奇怪的和公认的黑客把戏,以获得ou

@routeName = route.split(":")[1]

# only substantiate the dropdown on User Catalog screen.
if @routeName is "catalogScreen" or @routeName is "catalogPDFScreen"
我相信你可以想象,这不是理想的,也不是特别干净。我只是想找到方法来干掉我的路由器文件来捕捉所有这些全球事件,这是我能想到的最好的方法

routes:
  ""                                        : "homeScreen"
  "catalogs"                                : "catalogsScreen"
  "catalogs/:id"                            : "catalogScreen"
  "catalogs/:id/page/:page_id"              : "catalogScreen"
  "catalogs/:id/pdf"                        : "catalogPDFScreen"
  "catalogs/:id/pdf/page/:page_id"          : "catalogPDFScreen"
  "catalogs/:id/category/:category_id"      : "categoryScreen"
  "departments/:id"                         : "departmentScreen"
  "notifications"                           : "notificationsScreen"
  "settings"                                : "settingsScreen"
  "products/:id"                            : "productScreen"
  "catalog/:catalog_id/search/:search_query": "searchCatalogScreen"
  "search/:search_query"                    : "searchScreen"
  "login"                                   : "loginScreen"
  "members/:member_id/catalogs/:catalog_id" : "userCatalogScreen"
  "members/:member_id"                      : "profileScreen"
  ":user_name/:catalog_name"                : ""

#extends router class to allow storing of routes for a history
constructor: (options) ->
  @on "all", @storeRoute
  @on "all", @clearAlerts
  @on "all", @clearScroll
  @on "all", @setSearch
  @on "all", @setNav

在此提前感谢任何人的帮助!我对主干网越来越有经验,但我显然有一些东西需要学习。

就路由表本身的干燥度而言,您可以利用对optional的支持来组合共享相同根但不同参数的路由:

"catalogs/:id(/page/:page_id)"
至于将常见操作附加到某些路由(但不是全部路由),有许多选项。我认为最干净的方法是将您的路由器拆分为多个路由器:
CatalogRouter
用于
catalogs*
URL等。这只有在路由器自然映射到您的应用程序结构时才有意义

如果不想拆分路由器,另一种方法是触发路由的自定义事件

catalogScreen:(id, pageId) =>
  #normal route handling here
  @trigger "routed:catalog"
以及其他地方:

@on "routed:catalog", @foo
@on "routed:catalog", @bar
@on "routed:catalog", @baz
或者,如果您的事件处理程序不需要路由参数,您可以使用下划线的
compose
来进行一些语法分析

@on "routed:catalog", _.compose @foo, @bar, @baz

就路由表本身的干度而言,您可以利用对optional的支持来组合共享相同根但不同参数的路由:

"catalogs/:id(/page/:page_id)"
至于将常见操作附加到某些路由(但不是全部路由),有许多选项。我认为最干净的方法是将您的路由器拆分为多个路由器:
CatalogRouter
用于
catalogs*
URL等。这只有在路由器自然映射到您的应用程序结构时才有意义

如果不想拆分路由器,另一种方法是触发路由的自定义事件

catalogScreen:(id, pageId) =>
  #normal route handling here
  @trigger "routed:catalog"
以及其他地方:

@on "routed:catalog", @foo
@on "routed:catalog", @bar
@on "routed:catalog", @baz
或者,如果您的事件处理程序不需要路由参数,您可以使用下划线的
compose
来进行一些语法分析

@on "routed:catalog", _.compose @foo, @bar, @baz

这太漂亮了!!非常感谢。非常聪明的主意,直到现在我才知道关于u.compose。很酷。这太漂亮了!!非常感谢。非常聪明的主意,直到现在我才知道关于u.compose。很酷。