灰烬失去了积极的踪迹

时间:2015-01-11 23:55:48

标签: javascript ember.js ember-router

您好我在ember中有以下路线:

App.Router.map(function(){

    this.resource('meat', function() {
        this.resource('poultry', function() {
            this.route('chicken');
            this.route('duck');
        });
    });
});

我的模板看起来像这样:

<script type='text/x-handlebars' id='meat'>       
     <div>{{outlet}}</div>
</script>


<script type='text/x-handlebars' id='poultry'>
       Poultry
       <br/><br/>
          {{#link-to 'poultry.chicken'}}Chicken{{/link-to}}
          {{#link-to 'poultry.duck'}}Duck{{/link-to}}

      <br/><br/>
      <div>
         {{outlet}}
      </div>
</script>

<script type="text/x-handlebars" id="poultry/chicken">
    <h4>Chicken</h4>
</script>

<script type="text/x-handlebars" id="poultry/duck">
    <h4>Duck</h4>
</script>

问题是,当我点击'Duck'链接时,我失去了对'Poultry'的主动追踪。

我无法弄明白,路径是正确的,但活动类已经消失。

这是一个jsbin:http://emberjs.jsbin.com/yularepare/2/

谢谢!

1 个答案:

答案 0 :(得分:3)

评论中的代码与JSBin略有不同。您没有包含应用程序模板。这是:

<script type='text/x-handlebars' data-template-name='application'>
  {{#link-to 'poultry.chicken' }}Poultry{{/link-to}}  

  <br/><br/>
  <div>
    {{outlet}}
  </div>
</script>

您正在失去active课程,因为您直接链接到'poultry.chicken',而不是'poultry'。它不是父路线,而是兄弟路线。如果您想保留活动课程,请将link-to更改为:

{{#link-to 'poultry'}}Poultry{{/link-to}}

它应该可以正常工作。正在使用JSBin:http://jsbin.com/fefucalaqi/1/edit

编辑:评论询问如何处理重定向到第一个结果。在这里添加。

App.PoultryIndexRoute = Ember.Route.extend({
  redirect: function() {
    // write some code to get to your first result here.
    this.transitionTo('poultry.chicken');
  }
});

现在你将获得两个:所有家禽路线上的活跃课程,如果没有选择,你将展示第一个。