meteor iron-router 并获取 accounts-entry 包的所有路由的名称
meteor iron-router and getting the names of all routes for the accounts-entry package
流行的 accounts-entry 软件包中有一个与 iron-router 相关的错误。我相信 iron-router 的更高版本已更改为作为中间件更好地工作,因此调用 Router.routes
在此 file 的第 87 行使用了以下代码:
_.each Router.routes, (route)->
exclusions.push route.name
# Change the fromWhere session variable when you leave a path
Router.onStop ->
# If the route is an entry route, no need to save it
if (!_.contains(exclusions, Router.current().route?.getName()))
Session.set('fromWhere', Router.current().path)
不幸的是,在 Router.routes 上执行 _.each 似乎不再是一个有效的解决方案,因为 Router.routes 不会 return 并且对象中具有 .name 属性它。
你如何获得最新的iron-router的所有路由的名称?
这个有点棘手:在最新版本的 iron:router
中,Router.routes
现在被定义为函数数组。
事实是,函数在 JS 中已经有一个默认值 name
属性,其中包含函数在定义时分配的名称。
var myFunc = function funcName(){...};
console.log(myFunc.name); // == "funcName"
幸运的是,在数组的路由项上定义了一个getName
方法,您可以使用这段代码遍历所有路由并获取它们的名称:
_.each(Router.routes, function(route){
console.log(route.getName());
});
流行的 accounts-entry 软件包中有一个与 iron-router 相关的错误。我相信 iron-router 的更高版本已更改为作为中间件更好地工作,因此调用 Router.routes
在此 file 的第 87 行使用了以下代码:
_.each Router.routes, (route)->
exclusions.push route.name
# Change the fromWhere session variable when you leave a path
Router.onStop ->
# If the route is an entry route, no need to save it
if (!_.contains(exclusions, Router.current().route?.getName()))
Session.set('fromWhere', Router.current().path)
不幸的是,在 Router.routes 上执行 _.each 似乎不再是一个有效的解决方案,因为 Router.routes 不会 return 并且对象中具有 .name 属性它。
你如何获得最新的iron-router的所有路由的名称?
这个有点棘手:在最新版本的 iron:router
中,Router.routes
现在被定义为函数数组。
事实是,函数在 JS 中已经有一个默认值 name
属性,其中包含函数在定义时分配的名称。
var myFunc = function funcName(){...};
console.log(myFunc.name); // == "funcName"
幸运的是,在数组的路由项上定义了一个getName
方法,您可以使用这段代码遍历所有路由并获取它们的名称:
_.each(Router.routes, function(route){
console.log(route.getName());
});