如何动态地将路由名称传递给{{linkTo}}?如何将模型路由名称项传递给模板中的linkTo ember.js
例如,给出此代码:
App.Router.map(function() {
this.resource('anon', {path: '/main'},
function() {
this.route('home', {path:'/home'});
this.route('about', { path: '/about' });
this.route('contact', { path: '/contact' });
});
});
App.NavController = Ember.ArrayController.extend({
selectedNav:'',
setNav:function(value){
var nav = App.Nav.find(value);
var items = nav.get('navItems');
this.set('content', items);
}
});
这些模板:
<script type="text/x-handlebars" data-template-name="nav">
<ul class="nav">
{{#each in controller}}
{{ partial "basicNav"}}
{{/each}}
</ul>
</script>
<script type="text/x-handlebars" data-template-name="_basicNav">
<li>{{#linkTo navItemPath}}{{navItemName}}{{/linkTo}}</li>
</script>
这些模型与以下灯具数据:
App.Nav = DS.Model.extend({
navItems:DS.hasMany('App.NavItem'),
name:DS.attr('string')
});
App.NavItem = DS.Model.extend({
nav:DS.belongsTo('App.Nav'),
navItemName:DS.attr('string'),
navItemPath:DS.attr('string')
});
App.Nav.FIXTURES = [
{
id: 10,
name: 'Anon',
navItems: [100,200,300]
}
];
App.NavItem.FIXTURES = [
{
id:100,
nav:10,
navItemName:'Home',
navItemPath:'anon.home'
},
{
id:200,
nav:10,
navItemName:'Contact',
navItemPath:'anon.contact'
},
{
id:300,
nav:10,
navItemName:'About',
navItemPath:'anon.about'
}
];
我如何通过navItemPath到{{linkTo}}助手?在此代码段:
{{#linkTo navItemPath}}{{navItemName}}{{/linkTo}}
烬抱怨说,它无法找到“navItemPath”的路线,就像它的字面寻找它。如果我更换与像一个有效的字面路线:
{{#linkTo 'anon.home'}}{{navItemName}}{{/linkTo}}
烬将呈现linkTo与navItemName不如预期,所以我知道该控制器传递正确的数据,但当然,所有的路线都是愚蠢的。我错过了明显的东西吗?
将router.map添加到问题中。您需要在引号中使用路由器资源名称,然后传递参数。像这样''{{#linkTo“nameOfResource”objectWhichContainsRouteId}} {{navItemName}} {{/ linkTo}}' – Giedrius
谢谢,@Giedrius。我更新了问题以包含我的路由器。我可以看到正确传入的数据。例如,如果我将navItemName更改为navItemPath,则会看到传入的路由字符串。您知道{{linkTo}}是否必须传递字符串吗?再次,我试图从我的模型中传递一个字符串的ref,它的行为就像它试图从字面上读取ref一样。感谢您的反馈! – Ryanopolis