javascript - 如何在 Meteor Iron-router 的内部模板中访问全局数据

标签 javascript meteor iron-router

我正在使用 Iron-router 包,但在访问模板中的全局数据时遇到问题。我有一个 router.js 至极定义:

路由器.js

var addMyData = function() {
    this.data = {myProp: 'value'};
}
Router.before(addMyData);

它工作正常。如果我需要在“每个” Handlebars 内使用它,我可以使用以下方式访问数据:

我的模板.html

<template name='myTemplate>
     {{myProp}} //Works fine!
     {{#each something}}
        {{../myProp}} //Also works fine!
     {{/each}}
</template>

太棒了。但是,当我需要使用内部模板时,外部模板上的所有数据都会消失。示例:

我的模板.html

<template name='myTemplate>
    {{myProp}} //Works fine!
     {{#each something}}
        {{> myInnerTemplate}}
     {{/each}}
</template>

<template name='myInnerTemplate>
    {{../myProp}} //Not works!
</template>

最奇怪的是 outerTemplate 中的所有数据都消失了。

这是一个错误,还是有另一种做法可以达到相同的目标?

谢谢。

最佳答案

我有一个 Handlebars 助手,我在我的所有项目中都使用它来解决这个问题,对 http://rockycode.com/blog/handlebars-loop-index/ 的代码进行了轻微修改。 ( CoffeeScript ):

Handlebars.registerHelper "iter", (context, options) ->
    fn = options.fn
    inverse = options.inverse
    ret = ""
    if context and context.length > 0
        i = 0
        j = context.length

        while i < j
            ret = ret + fn(_.extend({}, context[i],
                i: i
                context: context
                parent: @
                self: context[i]
            ))
            i++
    else
        ret = inverse(@)
    ret

将模板中的 {{#each}}{{/each}} 替换为 {{#iter}}{{/iter}},您将拥有新变量 parentcontextself,以及循环索引 i,您可以在 iter 循环中使用(并扩展到子模板中)。

因此,在您的情况下,{{../myProp}} 应替换为 {{self.myProp}}{{parent. myProp}}(反复试验,一个或另一个应该工作)。我怀疑您的问题是 Iron Router 特有的。

关于javascript - 如何在 Meteor Iron-router 的内部模板中访问全局数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19687583/

相关文章:

javascript - meteor 中的 Node js 二进制文件有什么用?

javascript - meteor.js 铁路由器 : prevent static template re-render and glitching?

javascript - meteor - 铁路由器不等待 onBeforeAction Hook 中的订阅数据

javascript - nodejs在webpack中是否提供了resolve.alias之类的选项

javascript - 如何使一个图像不可拖放到另一个图像上

javascript - HTML5 验证在 backbone.js onclick 路由到另一个 View 中不起作用?

javascript - 如何在托管 Web 服务器上实际部署 Node.js(或 django)项目?

javascript - 如何在 Meteor.js 中设置数据库?

javascript - Meteor 的新功能和辅助功能不起作用

css - 地铁 :iron-router-progress in Meteor 0. 9.1.1