使用新的Ember RouterV2,如何立即从索引状态重定向到另一个状态?

时间:2013-01-09 14:38:13

标签: ember.js ember-router

到目前为止我所拥有的:

App = Ember.Application.create({
    LOG_TRANSITIONS: true
});


App.Router.map(function(match){
    match('/').to('application');
    match('/edit').to('edit');
});


App.ApplicationRoute = Ember.Route.extend({
    redirect: function() {
        this.transitionTo('edit');
    },
    events: {
        startEdit: function( context ){
            this.transitionTo( 'edit' );
        }
    }
})

App.EditRoute = Ember.Route.extend({
    init: function(){
        this._super()
        console.log('EditRoute')
    },
});

车把:

<script type="text/x-handlebars" data-template-name = 'application'>
    Hello World
    {{ outlet main }} 
</script>

<script type="text/x-handlebars" data-template-name = 'edit'>
    <div class = 'edit-background'> Edit State: {{ title }} </div>
</script>

我有四个问题:

  1. 当我打开应用程序时,它只是保留在主页中,redirectTo挂钩是否会立即将您重定向到另一个状态?

  2. 此外,我在AplicationRoute的每个建议中都有此事件哈希:How to programmatically transition between routes using Ember.js' new Router。但我读完了答案,但仍然不确定你应该如何使用它。

  3. 如何在控制台上测试路由器?在通过调用transitionTo命令在状态之间导航之前,我现在该怎么办?

  4. 由于一些奇怪的原因,我的应用程序模板似乎呈现了两次,就像在那里有两个“Hello World”,并且当尝试添加类似:<li>{{#linkTo edit}}edit{{/linkTo}}</li>

  5. 我收到此错误:

    'Uncaught TypeError: Cannot read property 'container' of undefined   --  ember.js:2223' 
    

1 个答案:

答案 0 :(得分:2)

这是你最初在应用程序启动时加载editView / route / template的方法:

路由器

App.Router.map(function(match){
  match('/').to('application',function(match){
    match('/').to('edit')
  })
})

ApplicationTemplate

<script type="text/x-handlebars" data-template-name="application">
    {{outlet}}
</script>

EditTemplate

<script type="text/x-handlebars" data-template-name="edit">
    I am embedded! 
</script>

EditRoute

EditRoute = Ember.Route.extend({
  renderTemplates:function () {
      this.render('edit', {
      into:'application'
   });
})