【发布时间】:2015-11-10 09:50:49
【问题描述】:
从this question 开始,看来我必须使用 Meteor 在房屋周围转一圈才能将复选框标记为已选中 - 但我已经在谷歌上搜索了一个小时,但我找不到任何实际操作的示例它。
我已经创建了一个助手的基础:
Template.Settings.helpers({
isChecked: function () {
var id = this.id;
console.log(id);
}
});
这是 HTML:
<input type="checkbox" name="imaname" id="imanid" {{isChecked}} />
但是,我显然误解了 this 的上下文,因为无论我尝试什么都返回未定义(this.target 等等,都没有问题)。我找不到详细说明如何实际创建我应该使用的 isChecked 助手的文档,所以我现在迷茫和沮丧。
我从这里去哪里?
编辑: 好的,我让它工作了,但是我仍然想知道this 的上下文是什么(也许是个废话,我猜上下文是助手本身......如何访问触发助手的元素?) - 所以我可以让它更动态一点:
Template.Settings.helpers({
isChecked: function (value) {
return (value == 'on' ? 'checked' : false);
}
});
随着:
<input type="checkbox" checked={{ isChecked currentUser.profile.services.bananaExports }} />
【问题讨论】:
-
id是什么,你是怎么设置的,在什么上面? -
我正在尝试获取触发助手的复选框的 ID。 (虽然我实际上想要这个名字,但这正是别人成功使用的名字,所以我想我会从那里开始,但不知道
this的上下文是什么) -
啊,我明白了!我以为是来自模板数据。这是
id/name是硬编码的,还是来自某个数据源(例如集合)? -
它来自 HTML 中的复选框 :) 我最初的假设是上下文
this是触发助手的元素 - 但现在我想了更多关于它并不是真的有意义,因为它没有被传入 - 这必须只是助手本身。那么如何获取触发助手的元素的上下文呢? -
我已经用更新@Kyll 编辑了这个问题——那里有几个duh 时刻。但我假设有一种方法可以访问元素上下文,类似于事件中的
event.target.text.value?我可能误解了我见过的一个例子——也许帮助者不知道什么元素叫它们?
标签: meteor meteor-blaze spacebars