我有一个使用Ember的案例,我想让顶级URL可用(即localhost:4200 / demo),并且下面的所有路径也显示相同的URL(localhost:4200 / demo)。所以路由文件,如果可能的话看起来像:
this.route('demo', function() {
this.route('one', { path: '/' });
this.route('submit', { path: '/' });
});
我了解可以为整个应用设置ENV.locationtype
,但有没有办法为父网址下的特定网址有条件设置?
答案 0 :(得分:1)
一般来说,当你最终遇到这样的重大障碍时,是因为Ember暗中试图告诉你,你所做的事情并不是一个好主意。
您是否有特殊原因要求您的子路径以任何方式影响URL?如果您的主要目的是混淆事物,你能否接受URL中的随机值?
Ember使用网址来确定应用中的状态。如果您根本不想使用路由,那么此时您正在处理必须在自己之间切换的组件的嵌套层次结构。这实际上类似于在没有路由器的情况下使用React ......
答案 1 :(得分:0)
默认情况下,Ember可以管理URL,或者可以将其设置为不管理它们,但似乎期望的目的是让它在单个环境中执行,这在逻辑上是不允许的。
如果为none
宣布ENV.locationtype
,则会关闭Ember的默认网址管理。这是一个全环境的"组态。
如果使用Ember路由器映射嵌套路由,并且正在使用默认URL管理,那么请注意您不能为多个兄弟路径子路径定义相同的URL路径。
进一步观察,您的上述尝试是利用路由器地图中每个嵌套级别可用的single index
route管理的功能。但是,路由不能有多个index
路由。只识别定义的最后一个。
Router.map(function() {
this.route('demo', function() {
this.route('one', { path: '/' }) // <-- this is over-ridden by "submit"
this.route('submit', { path: '/' }) // <-- this defines an "index" route for demo
})
})