Javascript famo.us/js:绑定动态数据以单击事件发送数据

Javascript famo.us/js:绑定动态数据以单击事件发送数据,javascript,event-handling,dom-events,bind,famo.us,Javascript,Event Handling,Dom Events,Bind,Famo.us,我想将单击事件绑定到我在数组中收集的曲面。 每次单击一次,我都想发出一条消息。但每一次点击都应该发出自己的数据。我知道我的范围有问题,但我不知道如何解决:( for(var i=0;i

我想将单击事件绑定到我在数组中收集的曲面。 每次单击一次,我都想发出一条消息。但每一次点击都应该发出自己的数据。我知道我的范围有问题,但我不知道如何解决:(

for(var i=0;i
不知何故,我必须让
I
变量在(…)
上的
内部工作,但是绑定它(
.bind(this,I)
)不起作用。
有人知道如何解决这个问题,或者可以为我指出正确的方向吗?

找到了解决方案:您不仅需要将“i”绑定到事件,还需要将参数“i”指定给函数

完整代码:

for(var i=0; i < clickableSurfaces.length; i++) {
clickableSurfaces[i].on('click', function(**i**) {
   // output: undefined
   console.log(this.options[i]);

   // output: desired data
   console.log(this.options[0]);

    // emit data another view
   this._eventOutput.emit('foo', {data: this.options[i]});
}.bind(this, **i**));
}
for(var i=0;i
当您设置侦听器时,绑定数据可能会更容易。这样您就不必担心所传递对象的索引值

for(var i=0;i
谢谢你的评论。是的,你是对的。这看起来和听起来都是一个更好的解决方案。
for(var i=0; i < clickableSurfaces.length; i++) {
clickableSurfaces[i].on('click', function(**i**) {
   // output: undefined
   console.log(this.options[i]);

   // output: desired data
   console.log(this.options[0]);

    // emit data another view
   this._eventOutput.emit('foo', {data: this.options[i]});
}.bind(this, **i**));
}