Aurelia顶级组件没有路由

时间:2015-08-01 23:32:45

标签: aurelia

是否可以在没有路由器的情况下添加Aurelia顶级组件? 目标是创建一个没有路由器的组件,因为我的应用程序不需要任何基于URL的导航。

据我所知,Aurelia似乎将您带到一条路径,通过路由实例化组件,具体取决于组件如何在路由器中注册。

相反,我想在主index.html页面上为顶级组件添加标记:

<my-component bind.current="'123456'"></my-component>

我想在没有路由器的情况下定义组件,只使用Aurelia的模板和数据绑定功能 这可能吗?

在index.html(在默认项目的body标签内)中尝试了这个

<require from='./dist/my-component'></require>
<my-component></my-component>

但它似乎没有把它拿起来。理想情况下,我想在服务器提供的页面上的标记中定义它,因为它可以让我在元素上动态设置属性

<my-component current.bind={{someServerGeneratedId}}></my-component>

在上面我将使用像小胡子这样的模板框架,在从服务器提供页面时动态呈现Aurelia。 我可以将组件包装在另一个“登陆”组件中,但这使得通过服务器生成的绑定进行设置很难获益。

更新: Per Rob的回复:https://www.visualstudio.com/en-us/features/msft-android-emulator-vs.aspx - 他希望在将来的版本中添加向根目录页面添加根组件的功能。我知道有一些方法可以不使用路由器,但它仍然取决于在应用程序的引导过程中拉入局部视图。这不直接使用路由器,但从概念上讲,这实际上只是一个基于隐含/约定的客户端导航。最后有一个客户端请求拉入视图,这意味着我无法从初始服务器响应中动态生成html。

2 个答案:

答案 0 :(得分:2)

是的,如果没有路由器,您可以轻松完成此操作。只需从app.js中删除路由器配置,然后在app.html中删除路由器代码。

我认为您遇到的问题是您在index.html中再次指定了dist文件夹。你应该像这样引用它 -

<require from="my-component"></require>
<my-component current.bind="someServerGeneratedId"></my-component>

这将正确绑定。

答案 1 :(得分:0)

我猜你在这里错过了解路线概念。

在撰写本文时,Aurelia的index.html页面是您放置&#34; loading&#34;的首页。东西和Aurelia引导整个应用程序的地方。

因此,您无法直接在其上放置自定义组件,但这应该不是问题。

如果您没有更改Aurelia上的任何配置,它会查找您的app.html以引导您的应用,并且您可以在那里找到您想要的任何内容(路线与否,并不重要)。因此,您应该将组件放在那里,与您需要的其他标签/组件/等一起。

我在app.html中制作了一个没有任何路由和自定义组件的plunker,以及模拟你需要的东西。

<template>
  <require from='./my-component'></require>

  <my-component current.bind="serverGeneratedID"></my-component>
</template>

http://plnkr.co/edit/mLb8Ym638b4V2e9LDp0A?p=preview

如果您还需要其他任何内容,请在此处发表评论,我会尝试更进一步。