来自#each-iteration的this.data

时间:2019-08-10 17:52:34

标签: meteor meteor-blaze spacebars

我正在尝试访问{{#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}}设置中正确地做到这一点吗?

1 个答案:

答案 0 :(得分:0)

该错误与模板的each迭代无关。您尝试的是在submit事件句柄中获取表单数据。但是,没有上下文绑定到thisroom

要获取房间值,您需要访问输入值。

Blaze通过使用模板的内置jQuery(使用templateInstance.$)提供了一种快速的方法,该jQuery自动将作用域设置为模板的根目录,而不是整个文档的范围:

'submit .enterRoom'(event, templateInstance) {
  event.preventDefault();
  const roomName = templateInstance.$(event.currentTarget).find('input[name="name"]').val();
  // ...
}