如何将模型路由名称项传递给 ember.js 模板中的 linkTo

2023-12-28

如何动态地将路由名称传递给 {{link To}}?

例如,给定以下代码:

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}}

ember 抱怨它找不到“navItemPath”路线,就像它在字面上寻找它一样。如果我将其替换为有效的文字路径,例如:

{{#linkTo 'anon.home'}}{{navItemName}}{{/linkTo}}

ember 将按预期渲染带有 navItemName 的 linkTo ,因此我知道控制器正在向其传递正确的数据,但当然所有路由都是愚蠢的。我错过了一些明显的事情吗?


您不能使用 LinkTo 帮助程序来做到这一点,您需要绑定href您的链接到navItemPath using bindAttr http://emberjs.com/api/classes/Ember.Handlebars.helpers.html#method_bindAttr

<a {{bindAttr href="navItemPath"}}>{{navItemName}}</a>

确保呈现 navItemPath 值的逻辑考虑到location http://emberjs.com/guides/routing/specifying-the-location-api/ API

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将模型路由名称项传递给 ember.js 模板中的 linkTo 的相关文章

随机推荐