使用Meteor在应用程序之间共享非布局模板

时间:2015-11-23 10:14:26

标签: templates meteor iron-router

我有两个流星应用程序。每个人都有一个智能包,它以特定于应用程序的方式实现某个功能,即用户管理。我还有第三个流媒体智能包,它位于共享包目录中。第三个包具有两个应用程序共有的用户管理模板。我用铁路由器。

我需要将共享模板与应用模板相结合。 Iron-Router具有yield关键字。这对于组合模板很有用。问题是这只适用于特殊的,指定的布局模板。

如何使用meteor和iron-router组合或嵌套非布局模板的模板?

实施例

在下面的简化示例中,您可以看到三个包及其相应的模板。 app-*:user包实现了应用程序特定的用户模板,shared:user包实现了共享用户模板。

APP-1:用户

appUser.tpl.jade

p This is some App-1 specific text

APP-2:用户

appUser.tpl.jade

p This is some App-2 specific text

共享:用户

user.tpl.jade

h1 This is a shared title
+appUser

routes.coffee

Router.route '/user', name: 'user'

这里的问题是,在两个依赖智能包中,嵌套模板必须被称为appUser。这不仅可以防止模板名称对应用程序进行适当的描述,而且更令人担忧的是,它会紧密地耦合模板名称并使代码变得脆弱。

这是为了防止铁路由器允许我们使用yield关键字的模板紧密耦合,但由于我们无法在此上下文中使用yield关键字(我们可以吗?)然后我我想知道这是否真的是实现共享模板的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

你可能会从dynamic templates中受益。这些模板的名称可以通过帮助程序(全局定义或绑定到父模板)传递,其数据上下文甚至可以由帮助程序设置。

{{> Template.dynamic template=myTemplate [data=myData] }}

您的代码在此处动态提供myTemplatemyData,然后将kerbobble(html,帮助程序,事件处理程序)填充到父模板中。