gpt4 book ai didi

javascript - famo.us/js : bind dynamic data to click event for emitting data

转载 作者:行者123 更新时间:2023-12-03 12:02:29 26 4
gpt4 key购买 nike

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

for(var i=0; i < clickableSurfaces.length; i++) {
clickableSurfaces[i].on('click', function() {
// 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 变量在 .on(...) 内部工作,但绑定(bind)它 (.bind(this, i) )没有工作。有谁知道如何解决这个问题或者可以指出我正确的方向吗?

最佳答案

设置监听器时绑定(bind)数据可能会更容易。这样你就不用担心传递的对象的索引值。

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

// emit data to another view
// this = anotherView in this case
this._eventOutput.emit('foo', {data: data});
}.bind(anotherView, this.options[i]));
}

anotherView.on('foo', function(event) {
// event.data was emitted with the event
console.log(event.data);
});

关于javascript - famo.us/js : bind dynamic data to click event for emitting data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com