1

我有一条路线定义为:

AS.Router.map(function(){
    this.resource('analytics', {path: '/analytics'}, function(){
        this.route('index', {path: '/'});
        this.route('config', {path: '/config'});
    ); 
});

AS.AnalyticsRoute = Ember.Route.extend({
    redirect: function() {
        this.transitionTo('analytics.index');
    }
});

使用上述配置,我可以加载页面:

/#/分析

--这会加载分析/索引模板

/#/分析/配置

--这会加载分析/配置模板

但是 #/analytics/index 没有加载,它只显示加载的 gif 图像。这是我的模板的样子:

分析:

{{outlet}}

分析\索引:

index

分析\配置:

config

有没有一种方法可以使指向 #/analytics/index 的 url 链接也能正常工作而不会破坏 #/analytics?

谢谢,迪

4

1 回答 1

0

如果您resource在路由器映射中定义 a ,则analytics.index它是隐式路由,不应显式定义。然后,默认行为是您的analytics.index模板将在您定义analytics的地方呈现到模板的插座中。{{outlet}}

因此,例如,这应该按预期工作:

AS.Router.map(function(){
  this.resource('analytics', {path: '/analytics'}, function(){
    this.route('config', {path: '/config'});
  ); 
});

这会将模板正确呈现analytics.indexanalytics模板出口中。

如果您的analytics路线在导航到时应该可以直接访问"/"并且您希望您的用户被重定向到,/analytics那么您应该从您的重定向IndexRoute

AS.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('analytics');
  }
});

希望能帮助到你。

于 2013-09-03T20:03:27.153 回答