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

时间:2014-08-07 22:08:00

标签: javascript meteor spacebars

有没有办法获取用{{#each}}生成的选项标签的数据上下文?目前,我使用两种解决方法,具体取决于我迭代的数据类型。

案例1 - 选项光标

<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());
  }
});

案例2 - 选项数组

<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引用模板的数据上下文。

1 个答案:

答案 0 :(得分:0)

尝试UI.getElementData

来自Meteor docs

  

UI.getElementData(el)(客户端)

     

返回从Meteor模板渲染DOM元素时使用的数据上下文。

     

参数

     

el DOM元素
  由Meteor模板呈现的元素