gpt4 book ai didi

javascript - Meteor.js 中 UI.dynamic 模板的助手

转载 作者:行者123 更新时间:2023-11-30 05:34:36 26 4
gpt4 key购买 nike

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

是否可以只为动态模板 (Template.story) 创建助手,并避免为动态模板可以使用的所有可能模板重复创建助手,例如下面的示例?看来我使用的方法需要很多重复的代码。

story.html

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

story.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'
}

最佳答案

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

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

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

或者将助手作为数据传递(在当前版本的 iron router 下不起作用 - open bug)。

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}} 而无需其中的助手。

如果你有 iron-router 问题,你也可以使用 this 而不是 UI._remplateInstance.data 来碰碰运气。

关于javascript - Meteor.js 中 UI.dynamic 模板的助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com