1

我在 Titanium 中有 25 个单独的视图,它们都是基于集合中的模型创建的,如下所示:

tiles.each(function(tile){
    var tileView = Alloy.createController('board/tile', {
        tile: tile,
    });
    tile.controller = tileView;

    $.boardContainer.add(tileView.getView());
}

在这种情况下,tiles是一个 Appcelerator 集合,而 atile是一个模型。

在应用程序逻辑的某个时刻,我需要调用所有 25 个图块,并隐藏一个视图。

我目前所做的是再次循环遍历集合,并像这样调用视图中导出的函数

function disableArrow(){
    $.arrow.visible = false;
    arrowsVisible = false;
}
exports.disableArrow = disableArrow;

这可行,但不是很流畅,因为当您的设备速度较慢时,您可以看到瓷砖渲染......对于这类问题,最好的解决方案是什么?

4

2 回答 2

0

我认为没有解决方案可以解决您尝试实现的目标。如果您需要操纵 25 个视图,那么这就是需要发生的事情。你不能一次操纵所有这些。

您唯一可以优化的就是循环遍历它们。你可以 - hacky - 保留一个直接引用所有这些视图的数组,arrow并循环通过它而不是通过控制器。

于 2016-01-15T09:56:23.983 回答
-1

我想您可以将 TableView 与数据绑定结合使用,而不是手动创建一堆视图。看这里:Alloy 数据绑定
顺便问一下,当你只需要视图时,为什么要创建 25 个控制器?

于 2016-01-14T13:45:20.907 回答