Meteor:用于配置特定于用户类型的路由的约定

时间:2014-11-13 12:40:26

标签: javascript meteor iron-router spacebars

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

除了共享相同主页的两个userType(也将是公共的)之外,“发布者”和“读者”之间的所有其他内容将完全不同。例如,模板布局,导航,传入的数据。

我是否应该使用空格键{{#if}}阻止并仅显示userType可用的相关路径,因为我在下面的示例中的注册/登录路径中使用iron:router?这样,我将使用许多if语句来多次声明模板和功能,具体取决于userType。

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

EG。用户登录后是否可以使用铁路由器确定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>

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

1 个答案:

答案 0 :(得分:1)

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

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