我使用循环将多个视图推送到数组。附加到每个视图的是修改器和曲面。
var surfaces = [];
for(var i = 0; i<8; i++) {
var gridSurfaceView = new View();
var gridSurface = new Surface({
size: [25, 25],
content: "hello" + i,
})
var gridSurfaceMod = new Modifier({
origin: [0.5,0.5],
align: [0.5,0.5]
})
gridSurfaceView.add(gridSurfaceMod).add(gridSurface);
surfaces.push(gridSurfaceView);
}
我想访问表面数组中曲面的内容。我希望这会发生:
surfaces[0].getContent() //returns hello0
surfaces[1].getContent() //returns hello1
但当然不会,因为 surface 中的每个单元格都是一个视图,而不是一个表面。
无论如何都要从这个数组中访问这些表面吗?
答案 0 :(得分:1)
我通常会为组织做一些快速手动绑定,并且能够访问相关对象。例如,您可以初始化View,然后在添加它们之前将曲面和修改器绑定到视图。
这是您可以更改代码的方式..
var surfaces = [];
for (var i = 0; i<8; i++) {
var gridSurfaceView = new View();
gridSurfaceView.surface = new Surface({
size: [25, 25],
content: "hello" + i,
});
gridSurfaceView.mod = new Modifier({
origin: [0.5,0.5],
align: [0.5,0.5]
});
gridSurfaceView.add(gridSurfaceView.mod).add(gridSurfaceView.surface);
surfaces.push(gridSurfaceView);
}
然后你可以做..
surfaces[0].surface.getContent() //returns hello0
surfaces[1].surface.getContent() //returns hello1
希望这有帮助!
编辑:
或者,要获得相同的接口,您可以在视图上定义getContent函数,然后将曲面绑定到该函数。
var gridSurfaceView = new View();
var gridSurface = new Surface({
size: [25, 25],
content: "hello" + i,
})
gridSurfaceView.getContent = function(){
return this.getContent()
}.bind(gridSurface);
然后你的代码应该如下工作..
surfaces[0].getContent() //returns hello0
surfaces[1].getContent() //returns hello1