【发布时间】:2015-06-23 13:15:18
【问题描述】:
我的目标是在 Meteor 网站上动态创建导航菜单。
我有一个带有静态链接的经典菜单以及我希望在需要时插入其他链接的产量:
<nav id="menu">
<a href="#link1">Link 1</a>
<a href="#link2">Link 2</a>
{{> yield "navLinks"}}
</nav>
-
// module_posts.js
Router.onAfterAction(function(){
if (userIsAdmin()) {
this.render('postsMenu', { to: 'navLinks' });
}
});
// module_users.js
Router.onAfterAction(function(){
if (userIsAdmin()) {
this.render('usersMenu', { to: 'navLinks' });
}
});
问题是,例如,当连接管理员时,每个模块(帖子、角色、类别...)都应该将自己的链接插入到该区域,但会发生的是每个模块都在渲染前一个模块,并且删除另一个模块添加的链接,因此该区域似乎只接受一个要呈现的模板。
也许我做错了,所以请给我一个干净的解决方案。
-- 编辑--
好吧,也许一个更好的解释: 我有几个可以启用或禁用的模块(帖子、用户、角色等),每个模块都有一个导航菜单来管理它。
现在我想在一个名为 {{nav}} 的独特区域中显示他们的菜单。 因此,如果启用了该模块,我将不得不在每个模块的某处编写代码以将其菜单附加到 {{nav}} 区域。
我真的很想使用模板来做到这一点,因为我可以直接在其中构建逻辑,而不是使用集合来存储链接。
【问题讨论】:
-
看看this。它可能会为您提供一些见解。
-
在我提供答案之前,我想知道,一旦用户导航到某个页面,您是否只想将这些“导航链接”添加到导航链接列表中,或者您是否想要它们全部在应用程序加载时立即添加?在应用程序加载时动态添加它们而不是完全添加它们将决定您解决此问题所需的解决方案。
-
@n4tiv3pwnst4r :我想在例如 URL 匹配 /admin/posts/* 时显示帖子链接,我不想在任何时候看到它们,只是当我需要它们。
-
如果我的回答为您的问题提供了解决方案,请务必将其标记为答案
标签: javascript templates meteor iron-router