嗨,我在烬中有以下路线:
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/
谢谢!
最佳答案
您注释中的代码与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');
}
});
现在,您将同时获得这两种信息:所有家禽路线上的活动课程,并且如果未选择任何课程,则将显示第一个。