famo.us:访问附加到数组中视图的曲面内容

时间:2014-06-18 22:38:19

标签: arrays famo.us

我使用循环将多个视图推送到数组。附加到每个视图的是修改器和曲面。

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 中的每个单元格都是一个视图,而不是一个表面。

无论如何都要从这个数组中访问这些表面吗?

1 个答案:

答案 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