获取路由中的信息

Flow Router除了在路由中向action方法传递参数之外,还通过(响应式的以及其他的)方法在全局单例FlowRouter中创建了大量有效的信息。 当用户浏览你的应用时,这些方法中的值将随之改变(在某些情况下是响应式地变化)。

如同应用中的任何其他单例(参见数据加载中关于存储的内容),这是限制你直接访问FlowRouter最好的办法。应用中的这部分方法将保持模块化及独立性。至于FlowRouter,最好是单独地从顶部组件层访问,从“页面”组件中,或者从包裹它的框架结构中进行访问。可以从UI相关的文章中阅读更多关于访问数据的内容。

当前的路由

在代码中访问当前路由的信息是非常有用的,这里有一些你可以调用的响应式方法:

  • FlowRouter.getRouteName() 获取路由的名称
  • FlowRouter.getParam(paramName) 返回某个URL的参数值
  • FlowRouter.getQueryParam(paramName) 返回某个URL的查询参数

在我们的示例应用Todos的列表页中,我们可以通过FlowRouter.getParam('_id')访问到当前列表的ID(我们将在后续了解更多)。

高亮显示激活的路由

一种合理的情况是当通过导航组件渲染出链接时,通过全局单例FlowRouter,在组件层更深入地访问当前路由的信息。这通常需要通过一些方式高亮显示“激活的”路由(是指用户当前访问的路由或者网站的版块)。

通过zimme:active-route包我们可以非常方便的实现这些:

meteor add zimme:active-route

在示例应用Todos的App_body模板中,我们链接到每个用户知晓的列表中:

{{#each list in lists}}
  <a class="list-todo {{activeListClass list}}">
    ...

    {{list.name}}
  </a>
{{/each}}

通过activeListClass帮助器我们可以确定用户当前访问的列表:

Template.App_body.helpers({
  activeListClass(list) {
    const active = ActiveRoute.name('Lists.show')
      && FlowRouter.getParam('_id') === list._id;

    return active && 'active';
  }
});

results matching ""

    No results matching ""