【问题标题】:How to deal with checkboxes in meteor如何处理流星中的复选框
【发布时间】: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


【解决方案1】:

我还是想知道这是什么背景

在 Blaze 模板中,帮助器 this 指的是调用帮助器的数据上下文,它是模板的数据上下文,除非您已将上下文设置为其他内容。要了解数据上下文,请参阅有关该主题的 Discover Meteor's Guide

如何访问触发助手的元素

Blaze 无法告诉您在 DOM 中的哪个位置调用了助手,它只能访问数据上下文和您传递给助手的任何参数。

如果你真的需要访问 DOM 节点,你需要使用 Template.instance().find('some query')Template.instance().$('some query') 来获取 JQuery 对象。

将复选框标记为选中的另一种方法是这样定义它

<input type="checkbox" name="imaname" id="imanid" checked={{isChecked}} />

然后在您的助手中将isChecked 设置为true 或false。

【讨论】:

    【解决方案2】:

    如果我理解你的问题,这是我的方法,而不是使用助手,你最好使用 blaze 模板事件处理程序和 jquery,如下所示:

    Template.Setting.event({
    'click input'(event){
    if($('#imanid').is(":checked") == true){
       return true;
    }else{
       return false;
    }
    }
    });
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2018-07-25
      • 2017-04-20
      • 2015-11-18
      相关资源
      最近更新 更多