基于路由的渲染

现在我们了解到如何定义路由以及访问关于当前路由的信息,当用户访问一个路由时,我们通常能够做你想做的事---在一个呈现UI的屏幕中渲染它。

在这部分内容中,我们将讨论如何使用Blaze作为UI引擎渲染路由。如果你正使用React或Angular开发你的应用,你将会得到类似的概念,但代码方面则会有一些不同

当使用Flow Router时,最简单的方法针对不同的URL显示不同的页面视图是使用辅助的Blaze布局包。首先,确认你已经安装了Blaze布局包:

meteor add kadira:blaze-layout

当使用这个包时,我们需要定义一个“布局”组件。在示例应用Todos中,这个组件被命名为App_body

<template name="App_body">
  ...
  {{> Template.dynamic template=main}}
  ...
</template>

(这并不是完整的App_body组件,但在这儿我们突出了最重要的部分)。 此时,我们使用一个Blaze中名为Template.dynamic的属性来渲染一个模板,附加到数据上下文的属性main中。使用Blaze布局,当路由被访问时我们可以更改main属性。

我们在List.show如路由定义的action方法中做了这些:

FlowRouter.route('/lists/:_id', {
  name: 'Lists.show',
  action() {
    BlazeLayout.render('App_body', {main: 'Lists_show_page'});
  }
});

这意味着无论何时当一个用户访问/list/X形式的URL,Lists.show路由将会起作用,触发BlazeLayout的调用,设置App_body组件中的main属性。

results matching ""

    No results matching ""