有没有办法获取用{{#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
引用模板的数据上下文。
答案 0 :(得分:0)
尝试UI.getElementData
。
来自Meteor docs:
UI.getElementData(el)(客户端)
返回从Meteor模板渲染DOM元素时使用的数据上下文。
参数
el
DOM元素
由Meteor模板呈现的元素