【问题标题】:Handlebars + Meteor + iron-router车把 + Meteor + Iron-router
【发布时间】:2013-11-21 13:40:54
【问题描述】:

我在我的流星项目中使用 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 中时,我从 Iron-router 收到错误消息

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

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

【问题讨论】:

    标签: meteor handlebars.js iron-router


    【解决方案1】:

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

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

    只需将字段 link 更改为不同的名称,例如 my_link。

    【讨论】:

    • 做到了。谢谢!
    • 官方记录在哪里?我希望我早点知道!
    【解决方案2】:

    正如@perhelium 提到的,Iron-Router 指定了一个名为“link”的助手

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

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

    所以你的线路:&lt;a href="{{link}}"&gt;Click here!&lt;/a&gt;

    需要指定为&lt;a href="{{this.link}}"&gt;Click here!&lt;/a&gt;

    【讨论】:

    • 谢谢,这是一个更好的解决方案,然后将每个收藏项重命名为 my_link。
    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 2023-03-12
    • 2017-06-17
    • 2015-04-06
    • 1970-01-01
    • 2023-03-12
    • 2015-01-25
    • 2014-05-06
    相关资源
    最近更新 更多