我正在创建一个有两种用户类型的应用程序。这是在用户创建时确定的。此字段位于Meteor.users.userType: publisher
中,也可以是userType: reader
。
除了两个用户类型共享同一个主页(也将是公共页面)之外,“发布者”和“阅读者”之间的所有其他内容都将完全不同。例如模板布局,导航,传入的数据。
我应该使用空格键{{#if}}块并仅显示用户类型可用的相关路径,就像我在以下示例中使用iron:router在注册/登录路径中所做的类似操作一样吗?这样,我将多次使用许多if语句来声明取决于userType的模板和功能。
到目前为止,由于userType具有不同的用户配置文件数据结构,我只是在调用每个userType需要查看的所需字段。从表面上看,这很好,因为我为两个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>
预先感谢您考虑提供帮助。
最佳答案
您可以尝试使用dynamic template includes。创建两个名为“ publisher”和“ reader”的模板,然后在父模板中包括以下模板:
{{> UI.dynamic template=currentUser.userType }}
关于javascript - meteor :配置特定于用户类型的路由的约定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26909098/