我正在创建一个有两种用户类型的应用程序。这是在用户创建时确定的。此字段位于Meteor.users.userType: publisher
或userType: 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>
提前感谢您考虑提供帮助。
答案 0 :(得分:1)
您可以尝试使用dynamic template includes。创建2个名为“publisher”和“reader”的模板,然后在父模板中包含它们:
{{> UI.dynamic template=currentUser.userType }}