在文档中给出removeListener
- /famous/core/Surface.js
removeListener (type, fn)
Unbind an event by type and handler. This undoes the work of 'on'
所以我想要完成的是..有四个表面,当我点击一个时,它会从其他三个表单中删除点击操作,因此用户将无法点击它们。
removeEventListener('click', function() {
console.log("removed");
});
我在做什么? 感谢。
答案 0 :(得分:2)
要获取在Famo.us事件中单击的表面,您可以使用e.origin。然后,您可以使用此曲面与所有曲面进行比较,并相应地取消绑定事件。要正确使用removeListener,您需要将事件类型以及要删除的函数传递给它。
这是一个完整的例子或你描述的内容。如果单击其中一个方块,它将成为可进一步单击的唯一方格。
希望这有帮助!
var Engine = require("famous/core/Engine");
var Surface = require("famous/core/Surface");
var Transform = require("famous/core/Transform");
var StateModifer = require("famous/modifiers/StateModifier");
var context = Engine.createContext();
var surfaces = [];
var handleClick = function(e){
var count = parseInt(e.origin.getContent()) + 1 ;
e.origin.setContent(count);
for (var i = 0; i < surfaces.length; i++) {
var surface = surfaces[i];
if (surface != e.origin) {
surface.removeListener('click',handleClick);
};
};
}
var colors = ["red","green","blue","purple"];
for (var i = 0; i < 4; i++) {
var surface = new Surface({
size:[100,100],
content: "0",
properties: {
backgroundColor: colors[i],
color: 'white',
lineHeight:'100px',
textAlign:'center'
}
})
surface.state = new StateModifer({
transform:Transform.translate(0,i*100,0)
})
surface.on("click",handleClick);
surfaces.push(surface);
context.add(surface.state).add(surface);
};