我有一长串要绑定到“下拉”列表的静态数据(在本例中是国家和州/省的列表)。
由于这是静态数据,使用模型和集合不仅看起来有点过分,而且在我的实验中,使用这么多数据也真的很慢。
我想做的是一个简单的模板绑定,而不必弄乱模型和集合。只需获取一组对象,然后循环遍历它,在我看来绑定必要的 XML。
鉴于有这么多 JS 模板引擎,我认为这在 Titanium 中是可能的?我的搜索没有任何帮助。
我有一长串要绑定到“下拉”列表的静态数据(在本例中是国家和州/省的列表)。
由于这是静态数据,使用模型和集合不仅看起来有点过分,而且在我的实验中,使用这么多数据也真的很慢。
我想做的是一个简单的模板绑定,而不必弄乱模型和集合。只需获取一组对象,然后循环遍历它,在我看来绑定必要的 XML。
鉴于有这么多 JS 模板引擎,我认为这在 Titanium 中是可能的?我的搜索没有任何帮助。
Alloy 中的数据绑定与 Backbone 模型和集合对象紧密耦合。当您在 Alloy 视图 XML 文件中的元素上声明dataCollection
属性时,代码生成器会创建一个循环,该循环通过该属性指定的集合运行,为集合中的每个模型构造一个新视图对象并设置视图的适当属性及其子视图。Resources
您可以通过打开项目文件夹下的生成代码来查看其工作原理。
循环遍历 Backbone 集合不应该比遍历普通数组慢很多,所以我猜测您看到的性能不佳是因为您使用示例代码和文档中所示的持久性适配器之一加载集合。但是,如果您的数据不会在运行时更改,您可以创建一个普通的 Backbone 集合并调用该集合的reset()
方法来处理您的数据的批量集,从而避免所有与通过持久性适配器获取数据相关的开销。这是来自Alloy 示例应用程序的摘录,它显示了这是如何完成的:
// alloy.js
Alloy.Collections.heroes = new Backbone.Collection();
Alloy.Collections.heroes.reset([
{ name: 'Ironman' },
{ name: 'Superman' },
{ name: 'Thor' },
{ name: 'Captain America' },
{ name: 'Hulk' },
{ name: 'Green Lantern' },
{ name: 'Punisher' },
{ name: 'Spiderman' },
{ name: 'Wolverine' },
{ name: 'Cyclops' }
]);
创建集合后,可以将其绑定到视图:
<TableView dataCollection="heroes">
<TableViewRow title="{name}"/>
</TableView>
查看 Github 上的 Alloy 存储库,了解如何绑定到各种集合视图的示例: https ://github.com/appcelerator/alloy 。
只需使用具有适当配置的 ItemTemplate 的 listView 就可以了。