如何在Meteor中访问一个选项的上下文?

How can I access the context of an option in Meteor?

本文关键字:一个 选项 上下文 Meteor 访问      更新时间:2023-09-26

是否有任何方法可以获得与{{#each}}生成的选项标签的数据上下文?目前,我使用两种变通方法,这取决于我要迭代的数据类型。

Case 1 - Options游标

<template name="select">
  <select>
    {{#each options}}
    <option value="{{_id}}">{{label}}</option>
    {{/each}}
  </select>
</template>
Options = new Meteor.Collection('options');
Template.select.events({
  'change select': function (e, t) {
    var option_doc = Options.findOne($(e.target).val());
  }
});

Case 2 - Options Array

<template name="select">
  <select>
    {{#each options}}
    <option>{{label}}</option>
    {{/each}}
  </select>
</template>
var options = [{label: "foo"}, {label: "bar"}];
Template.select.events({
  'change select': function (e, t) {
    var option_doc = options[e.target.selectedIndex];
  }
});

如果这是使用文本输入,this将是事件处理程序中的option_doc。但是,由于更改事件是在select而不是option上触发的,因此this引用模板的数据上下文。

试试UI.getElementData

From the Meteor docs:

UI.getElementData (el) (客户端)

返回从流星模板呈现DOM元素时使用的数据上下文。

参数

el DOM元素
由流星模板呈现的元素