【发布时间】:2014-11-13 22:33:09
【问题描述】:
我正在创建一个有两种用户类型的应用程序。这是在用户创建时确定的。该字段位于Meteor.users.userType: publisher 或userType: 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