流星铁路由器并获取帐户入口包的所有路由的名称

fun*_*eah 3 routing middleware meteor iron-router

流行的帐户入口包中有一个与铁路由器相关的错误.我相信铁路由器的后期版本改为更好地作为中间件工作,因此呼吁Router.routes

在该文件的第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)
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎没有在Router.rou上做一个_.each是一个解决方案,因为Router.routes不会返回并且对象中包含.name属性.

你如何获得最新铁路由器的所有路线的名称?

sai*_*unt 7

这个有点棘手:在最新版本中iron:router,Router.routes现在被定义为一个函数数组.

事实上,函数已经name在JS中有一个默认属性,它包含函数在定义上分配的名称.

var myFunc = function funcName(){...};
console.log(myFunc.name); // == "funcName"
Run Code Online (Sandbox Code Playgroud)

幸运的是,getName在数组的路由项上定义了一个方法,您可以使用这段代码迭代所有路由并获取其名称:

_.each(Router.routes, function(route){
  console.log(route.getName());
});
Run Code Online (Sandbox Code Playgroud)