Iron Router路径用于 - 从Template helper传递参数

时间:2014-09-16 08:12:02

标签: json meteor iron-router

我在我的项目中使用IronRouter,其中包含不同语言的内容。要显示消息代码,我使用了UI.registerHelper,如下所示:

UI.registerHelper('loadMessageCode', function(message) {
    //Logic in here to load string inside a template
    return 'sample-string-in-a-language';
});

我的内容是从json文件加载的,字符串是用不同语言指定的,如下所示。应用程序启动时会将其添加到Mongo.Collection中。

{
    "name": "Pages",
    "items": [
        {
            "title": {
                "en": "About Us",
                "de": "Über"
            },
            "slug": {
                "en": "about",
                "de": "über"
            },
            "content": {
                "en": "......"
                "de": "......"
            }

        }
    ]
}

从我的模板中为我的内容生成链接时,我正在使用IronRouters pathFor函数,我之前用它来生成链接。其工作原理如下:

<a href="{{pathFor 'content' _page_slug=this.slug}}" title="{{title}}">
    {{title}}
</a>

在我重构Json文件的结构之前,这很好用。现在我想要做的是以下几点:

<a href="{{pathFor 'content' _page_slug=<Use my helper function to dig out the slug>}}" title="{{title}}">
    {{title}}
</a>

我的问题是,这可以做到,如果是这样,怎么做?

1 个答案:

答案 0 :(得分:0)

流星指示0.9.x。

在模板中创建其他帮助:

JS

Template.template_name.helpers({
    translated_slug: function () {
      // get context data
      var data = Template.currentData();

      // retrieve slug
      var slug = data.slug || "default slug";

      // reuse global helper
      return UI._globalHelpers.loadMessage(slug)
    }
  });

HTML

<a href="{{pathFor 'content' _page_slug=translated_slug}}" title="{{title}}">
    {{title}}
</a>