在Meteor中使用#each渲染后无法从模板获取数据上下文

问题描述 投票:0回答:1

我正在使用 blaze 和 Meteor。

让我们尝试以下简单的设置:

    <template name="render_array>
      <ul class="list">
        {{#each items}}
          <li>{{this.itemdescription}}</li>
        {{/each}}
      </ul>
    </template>

在模板 JS 中

   Template.render_array.events({
     'click .list':function(event, template){
        console.log(this)
     }
   })

   Template.render_array.helpers({
     'list':function(event, template){
        return [
          {name: "AA", description:"A for Apple"},
          {name: "BB", description:"B for Boring"}
        ]
     }
   })

console.log 返回 {}

当我在模板事件中引用

this
时,我期望获得该对象。我做错了什么还是这不应该是预期的?

meteor meteor-blaze meteor-helper
1个回答
0
投票

我得到了答案。 html 的上下文是错误的。我需要做的是为我单击的元素提供正确的上下文。

<template name="render_array>
  <ul class="list"> 
    {{#each items}}
      <li class="list-item">{{this.itemdescription}}</li> <!-- add list item -->
    {{/each}}
  </ul>
</template>

Template.render_array.helpers({
  'click .list-item':function(ev, template) {
     console.log(this) // returns the object
  })
})

成功解决了!

© www.soinside.com 2019 - 2024. All rights reserved.