gpt4 book ai didi

html - Meteor:在每个语句中访问模板助手

转载 作者:行者123 更新时间:2023-11-27 23:35:35 24 4
gpt4 key购买 nike

因此,如果我有一个模板并且为该模板定义了一些助手,我可以在模板中正常使用它们,但是如果我尝试在 {{#each whatever}} 中使用它们> 它给我一个错误。看这个例子:

 {{#unless pollIsOpenHelper}}
<p>This poll closed on {{formatDate time_poll_closed}}.</p>
{{/unless}}

<table>
{{ #each indexedArray choices }}
<tr>
<td><span class="votes">{{ votes }}</span></td>
<td><span class="text">{{ text }}</span></td>
<td><a href="#" class="vote" data-id="{{ _index }}"><button>Vote for this option</button></a></td>
</tr>

{{#unless pollIsOpenHelper}}
<p>CLOSED.</p>
{{/unless}}

{{ /each }}
</table>

{{#unless}} 中的上述助手工作完美,仅在投票结束时显示消息。但是,如果我尝试执行相同的操作以在下面的 {{#each}} 中显示一条消息,则助手将不起作用并始终向我显示消息。控制台给我:Exception in template helper: TypeError: Cannot read property 'poll_is_open' of undefined

编辑:这是辅助代码:

  Template.poll.helpers({

pollIsOpenHelper: function() {
var poll_is_open = Polls.findOne({_id: this._id}).poll_is_open;

return poll_is_open;
},

});

最佳答案

正如其他人所说,您的问题是由 each 循环内部的数据上下文变化引起的。这导致 this._id 不是您所期望的。

假设您使用的是 Meteor 1.2.x+ 版本,您可以使用 {{#each thing in iterable}} 来解决这个问题。不覆盖数据上下文的空格键构造。

您可以按如下方式使用它:

{{#each array in indexedArray choices}} 
//doStuff
{{/each}}

如果您使用的不是 Meteor 1.2.x+ 版本,您可以修改您的助手以采用如下所示的参数:

Template.poll.helpers({
pollIsOpenHelper: function(poll) {
var poll_is_open = Polls.findOne({_id: poll._id}).poll_is_open;
return poll_is_open;
},
});

这将在您的模板中被称为: {{#unless pollIsOpenHelper this}} 在您的 #each block 之外或 {{#unless pollIsOpenHelper 。 ./}} 在你的 #each block

关于html - Meteor:在每个语句中访问模板助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976615/

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