【问题标题】:Meteor: Convention to configure routes specific to user-typeMeteor:配置特定于用户类型的路由的约定
【发布时间】:2014-11-13 22:33:09
【问题描述】:

我正在创建一个有两种用户类型的应用程序。这是在用户创建时确定的。该字段位于Meteor.users.userType: publisheruserType: reader

除了两个 userType 共享同一个主页(也将是公开的)之外,'publisher' 和 'reader' 之间的其他一切都将完全不同。例如模板布局、导航、传入的数据。

我是否应该使用空格键 {{#if}} 块并只显示可用于 userType 的相关路径,就像我在下面使用 Iron:router 的示例中的注册/登录路径中所做的那样?这样,我将使用许多 if 语句多次根据 userType 声明模板和功能。

到目前为止,由于 userTypes 具有不同的用户配置文件数据结构,我只是调用每个 userType 需要查看的所需字段。从表面上看,这似乎很好,因为我为两个 userType 创建了单独的模板和路径。但是必须有更好的对流,包括在应用程序启动时声明 userType。

例如。用户一登录就可以用铁路由器确定用户类型吗?所以如果 userType 是'reader',代码可以分支到特定的路由配置,如果 userType 是'publisher',代码可以分支到另一个路由配置?

在提交应用程序结构之前,我想先总结一些想法。

<template name="appBody">
<ul class="nav nav-tabs" role="tablist">
    <li><a href="{{pathFor 'allPosts'}}">All Posts</a></li> // public home page
    <li><a href="{{pathFor 'profilePagePublisher'}}">ProfilePage Publisher</a></li> //for userType: publisher
    <li><a href="{{pathFor 'createPost'}}">Create Posts</a></li> //for userType: publisher
    <li><a href="{{pathFor 'profilePageReader'}}">ProfilePage Reader</a></li> //for userType: reader
     <li><a href="{{pathFor 'readingList'}}">Reading List</a></li> //for userType: reader
    {{#if currentUser}}
    <li><a class="logout btn-secondary" href="#">Logout</a></li>
    {{else}}
    <li><a href="{{pathFor 'signin'}}" class="btn-secondary">Sign In</a></li>
    <li><a href="{{pathFor 'join'}}" class="btn-secondary">Join</a></li>
    {{/if}}
  </ul>
  {{> yield}}
</template>

提前感谢您考虑提供帮助。

【问题讨论】:

    标签: javascript meteor iron-router spacebars


    【解决方案1】:

    您可以尝试使用dynamic template includes。创建 2 个名为 'publisher' 和 'reader' 的模板,然后在父模板中包含它们,如下所示:

    {{> UI.dynamic template=currentUser.userType }}
    

    【讨论】:

    • 这是一个非常好的简单解决方案。完全分离模板,因此,我的助手对于每个模板/用户类型都是唯一的。
    • 我是否删除了 layoutTemplate 中的 {{> yield}} 并在那里添加了 {{> UI.dynamic template=currentUser.userType }}?我正在使用铁路由器,所以想知道这段代码是否进入路由控制器'layoutTemplate'?
    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 2017-03-12
    • 2016-09-16
    • 2011-09-24
    • 2014-06-06
    • 2021-09-17
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多