我正在使用 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
时,我期望获得该对象。我做错了什么还是这不应该是预期的?
我得到了答案。 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
})
})
成功解决了!