如何動態地將路由名稱傳遞給{{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