我正在尝试访问{{#eachin}}迭代中的值:
POST
例如,通常我会使用{{#each room in channels}}
<form class="enterRoom">
<button type="submit" class="roomJoin">
<b>{{room.name}}</b>
<img src="{{room.roomBanner}}" alt=".">
<input type="hidden" value="{{room.name}}" name="name">
</button>
<div class="inRoom">
{{#each name in room.inRoom}}
<a href="/c/{{name}}" target="_blank">{{name}}</a>
{{/each}}
</div>
</form>
{{/each}}
在事件中获取其名称以进一步使用它,例如
this.name
但这在这种情况下不起作用。我之前尝试过的是:
'submit .enterRoom'(event) {
event.preventDefault();
const isClosed = this.name; // room.name example here
}
room.name
但是那些给出相同的错误
this.room.name
有人可以向我解释如何在此{{eachin}}设置中正确地做到这一点吗?
答案 0 :(得分:0)
该错误与模板的each
迭代无关。您尝试的是在submit
事件句柄中获取表单数据。但是,没有上下文绑定到this
或room
。
要获取房间值,您需要访问输入值。
Blaze通过使用模板的内置jQuery(使用templateInstance.$
)提供了一种快速的方法,该jQuery自动将作用域设置为模板的根目录,而不是整个文档的范围:
'submit .enterRoom'(event, templateInstance) {
event.preventDefault();
const roomName = templateInstance.$(event.currentTarget).find('input[name="name"]').val();
// ...
}