在Meteor模板事件处理程序中获取正确的数据上下文

时间:2016-04-26 14:55:41

标签: templates events meteor

我正在使用Meteor 1.3.1,我正在做一些实验来获取事件监听器块中的数据上下文,这是我的代码:

  

var objs=[ 
      { a:"a1", b:"b1", yes:true },
      { a:"a2", b:"b2" },
      { a:"a3", b:"b3", yes:true },]


Template.tt.helpers({
  objs: objs
})

Template.tt.events({
  'click .b'(event, template) {
	console.log(Template.currentData().a);   //---> undefined
	console.log(template.data.a);            //---> undefined
    console.log(Template.parentData(0).a);   //---> undefined
	console.log(this);                       //---> Window Obj
  } 
})
<template name="tt">
{{#each objs}}
  <h1>a={{a}}, b={{b}}</h1> 
  {{#if yes}}
    <button class="b">b</button>{{yes}}
  {{/if}}
{{/each}}
</template>

我想获取a密钥的值,但在几个方面失败了。

1 个答案:

答案 0 :(得分:0)

此问题的常见模式是创建嵌套模板并将事件模板附加到其中:

HTML:

<template name="tt">
  {{#each objs}}
    {{> inner}}
  {{/each}}
</template>

<template name="inner">
<h1>a={{a}}, b={{b}}</h1> 
{{#if yes}}
  <button class="b">b</button>{{yes}}
{{/if}}
</template>

JS:

Template.inner.events({
  'click .b' (event, template) {
    console.log(this.a); //will be "a"
  } 
})