gpt4 book ai didi

javascript - Meteor:如何仅包含存在的模板?

转载 作者:行者123 更新时间:2023-11-28 15:44:24 25 4
gpt4 key购买 nike

我正在创建一个 Meteorite 包,用于呈现特定集合的表格。我希望通过添加可选的自定义列作为模板来自定义此表:

<template name="myPluginTable">
<table>
<thead>
<th>Column 1</th>
<th>Column 2</th>
{{> customHeaders}}
</thead>
<tbody>
{{#each objects}}
<tr>
<td>{{firstValue}}</td>
<td>{{secondValue}}</td>
{{> customFields}}
</tr>
{{/each}}
</tbody>
</table>
</template>

现在,只要在应用程序中的某处指定模板 customHeaderscustomFields 就可以正常工作。

但是如果省略这些模板,则会引发错误。这也不能通过向包添加虚拟模板来规避,因为尝试覆盖它们也会引发错误。

我想出的解决方案:

Template.myPluginTable.helpers({
customHeadersExist: function() {
return typeof(Template.customHeaders) === "object";
},
customFieldsExist: function(user) {
return typeof(Template.customFields) === "object";
},
});

在模板中:

{{#if customHeadersExist}}
{{> customHeaders}}
{{/if}}

{{#if customFieldsExist}}
{{> customFields}}
{{/if}}

现在这个可以工作,但是对于这样一个简单的任务来说,解决方案似乎过于复杂 - 我真的需要为每个可选模板声明辅助函数吗?所以我的问题确实是:

使包自定义模板可选的最佳方法是什么?是这个,还是有更好的方法?

最佳答案

我想到的最简单的解决方案是实现自定义助手:

UI.registerHelper('safeRender', function () {
var component = Template[this.name];
if (component) {
return component.extend({data: this.data});
}
return UI.Component;
});

您可以在模板中使用它,如下所示:

{{> safeRender name='customHeaders' data=.}}

data=. 部分用于确保模板将在相同的数据上下文中呈现。

关于javascript - Meteor:如何仅包含存在的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819510/

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