Routing Ember.js路由:如何设置默认路由以立即渲染?

Routing Ember.js路由:如何设置默认路由以立即渲染?,routing,ember.js,ember-old-router,Routing,Ember.js,Ember Old Router,我相信随着我深入研究,这一点会变得清晰,但目前还不清楚如何实现这一点 我一直在关注上的信息,但示例中缺少一个重要部分,即如何在不单击“主页”链接的情况下立即渲染“主页”视图 我已经开始深入研究文档,试图弄明白这一点,但与此同时,这似乎是一个有用的问题,为子孙后代提供了答案 我一直在使用上述问题中的JSFIDLE示例,并与另一个示例进行比较,我发现 到目前为止,这仍然是一个谜 当前代码: App.Router=Em.Router.extend({ enableLogging:true, 位置:'哈

我相信随着我深入研究,这一点会变得清晰,但目前还不清楚如何实现这一点

我一直在关注上的信息,但示例中缺少一个重要部分,即如何在不单击“主页”链接的情况下立即渲染“主页”视图

我已经开始深入研究文档,试图弄明白这一点,但与此同时,这似乎是一个有用的问题,为子孙后代提供了答案

我一直在使用上述问题中的JSFIDLE示例,并与另一个示例进行比较,我发现

到目前为止,这仍然是一个谜

当前代码

App.Router=Em.Router.extend({
enableLogging:true,
位置:'哈希',
根:Em.State.extend({
//事件
goHome:Ember.State.transitiono('home'),
viewProfile:Ember.State.transitiono('profile'),
//州
索引:Em.State.extend({
路线:“/”,
重定向至:“家”
}),
首页:Em.State.extend({
路线:'/home',
连接插座:功能(路由器、上下文){
var appController=router.get('applicationController');
appController.connectOutlet(“主页”);
}
}),
//州
个人资料:Em.State.extend({
路由:'/profile',
连接插座:功能(路由器、上下文){
var appController=router.get('applicationController');
appController.connectOutlet(“配置文件”);
}
}),
doOne:function(){
警报(“eins”);
}
}) 
});

更新:解决方案

事实证明,我使用的示例不起作用的原因是它使用了
Em.State.extend
,而不是
Em.Route.extend
。有趣的是,当我一步一个脚印地修改它们时,直到我把它们全部修改完,这个例子才起作用

以下是工作说明:

App.Router=Em.Router.extend({
enableLogging:true,
位置:'哈希',
根:Em.Route.extend({
//事件
goHome:Ember.State.transitiono('home'),
viewProfile:Ember.State.transitiono('profile'),
//州
索引:Em.Route.extend({
路线:“/”,
重定向至:“家”
}),
主页:Em.Route.extend({
路线:'/home',
连接插座:功能(路由器、上下文){
var appController=router.get('applicationController');
connectOutlet({name:'home'});
}
}),
//州
个人资料:Em.Route.extend({
路由:'/profile',
连接插座:功能(路由器、上下文){
var appController=router.get('applicationController');
appController.connectOutlet(“配置文件”);
}
}),
doOne:function(){
警报(“eins”);
}
}) 
});

您可以从索引重定向到主路由:

//默认路由
$(函数(){
App=Em.Application.create();
//在App.initialize()中为您实例化并连接
App.ApplicationController=Em.Controller.extend();
App.ApplicationView=Em.View.extend({
templateName:“应用程序”
});
App.NavController=Em.Controller.extend({});
App.NavView=Em.View.extend({templateName:'nav'});
App.HomeController=Em.Controller.extend({});
App.HomeView=Em.View.extend({templateName:'home'});
App.ProfileController=Em.Controller.extend({});
App.ProfileView=Em.View.extend({templateName:'profile'});
App.Router=Em.Router.extend({
enableLogging:true,
位置:'哈希',
根:Em.Route.extend({
goHome:Ember.State.transitiono('home'),
goProfile:Ember.State.transitiono('profile'),
索引:Em.Route.extend({
路线:“/”,
重定向至:“家”
}),
主页:Em.Route.extend({
路线:'/home',
连接插座:功能(路由器、上下文){
router.get('applicationController').connectOutlet({
姓名:“家”
});
}
}),
个人资料:Em.Route.extend({
路由:'/profile',
连接插座:功能(路由器、上下文){
控制台日志(“输入”);
router.get('applicationController').connectOutlet({
名称:“个人资料”
});
}
})
})
});
App.initialize();
});

{{view App.NavView controllerBinding=“controller.controllers.navController”}

{{outlet}} 导航: 家 轮廓 家。。。 轮廓
现在似乎做得不一样了。我用这种方法成功地做到了:

App = Ember.Application.create();

App.Router.map(function() {
  // 'index' route is default
  this.resource('dashboard');
});

App.IndexRoute = Ember.Route.extend({
    redirect: function() {
        // this redirects / to /dashboard
        this.transitionTo('dashboard');
    }
});

App.DashboardRoute = Ember.Route.extend({
});

使用Ember CLI,您可以将重定向放入index.js中的路由根目录:

import Ember from 'ember';

export default Ember.Route.extend( {
  redirect: function() {
    this.transitionTo('dashboard');
  }
});

谢谢你的工作示例。我花了一段时间才从上面的例子中找出区别,但我最终找到了答案。我给出的示例不起作用,因为它使用的是
Em.State.extend
而不是
Em.Route.extend