把手+流星+铁路由器

时间:2013-11-09 15:46:20

标签: meteor handlebars.js iron-router

我正在为我的流星项目使用铁路由器,一切都很顺利,但我只是遇到了一些奇怪的行为。

我为一个看起来像这样的项目列表设置了一个循环。

{{#each list_items}}
  <div>{{user.username}}
    <a href="{{link}}">Click here!</a>
  </div>
{{/each}}

我的用户的JSON对象如下所示:

{
  user: {
      username: jdoe
    },
  images: {
    low-res-url: http://example.com
  },
  link: http://example.com/profile
}

现在{{user.username}}按预期显示,但当我尝试将{{link}}放入href时,我从铁路由器中收到错误

"You called Router.path for a route named undefined but that that route doesn't seem to exist. Are you sure you created it?" 

任何帮助或建议都将不胜感激。

2 个答案:

答案 0 :(得分:5)

引擎盖下Iron-Router注册把手帮手:

Handlebars.registerHelper('link', function (options) {                          
  ...
}); 

只需将字段link更改为其他名称,例如my_link

答案 1 :(得分:4)

正如@perhelium所提到的,Iron-Router已经指定了一个名为'link'的帮助者

Handlebars.registerHelper('link', function (options) {...});

为了访问JSON对象中名为“link”的项,您需要显式引用JSON对象本身。

所以你的行:<a href="{{link}}">Click here!</a>

需要指定为<a href="{{this.link}}">Click here!</a>