2

在 Meteor v0.8.2 中,似乎必须为动态模板调用的各个模板( Template.story_en, )创建助手。Template.story_ne

是否可以仅为动态模板 ( ) 创建帮助程序,Template.story并避免为动态模板可以使用的所有可能的模板重复它,例如在下面的示例中?看来我使用的方法需要大量重复的代码。

故事.html

<template name="story">
    {{> UI.dynamic template=storyTemplate}}
</template>

故事.js

Template.story.storyTemplate = function() {
    return "story_" + Session.get('lang')
}


// This does not work
Template.story.color = function() {
    return '#f00'
}


// This works
Template.story_en.color = function() {
    return '#f00'
}

// This works (but seems to be unnecessary code)
Template.story_ne.color = function() {
    return '#f00'
}
4

1 回答 1

1

您可以使用全局助手,或将助手作为数据传入

使用全局助手(处理您拥有的每个模板)

UI.registerHelper("color", function() {
    return '#f00'
});

或将助手作为数据传递(在当前版本的 Iron 路由器下不起作用 -打开错误)。

Template.story.helpers({
    dataHelpers: function() {
        var data = UI._templateInstance().data || {};

        //Add the helpers onto the existing data (if any)
        _(data).extend({
            color: function() {
                return "#f00";
            }
        });

        return data;

    });
});

然后是html:

<template name="story">
    {{> UI.dynamic template=storyTemplate data=dataHelpers}}
</template>

然后在子模板中,您可以在{{color}}没有助手的情况下使用。

如果你有铁路由器问题this,你也可以试试运气。UI._remplateInstance.data

于 2014-07-13T08:39:43.750 回答