Titanium - 在 Alloy 中动态创建和添加 UI 对象的最佳实践是啥

Posted

技术标签:

【中文标题】Titanium - 在 Alloy 中动态创建和添加 UI 对象的最佳实践是啥【英文标题】:Titanium - What is the best practice for creating and adding UI object on the fly in AlloyTitanium - 在 Alloy 中动态创建和添加 UI 对象的最佳实践是什么 【发布时间】:2016-03-14 06:14:19 【问题描述】:

我正在我的应用程序上创建一个表单并且它具有验证。当发现某个字段无效时,我会在该字段上显示一个红色警告标志(它只是一个标签)。

因为我有很多字段,所以我创建了一个函数来获取 textfield 对象,使用我的样式执行 Ti.UI.createLabel,并根据接收到的对象定位顶部和左侧并将其添加到页面中。

虽然这项工作完美无缺,但我不得不认为它可能不是使用 Alloy 的“正确”方式。所以我想知道我是否应该创建一个 Alloy 视图(不需要控制器,因为没有逻辑),并且该视图将具有标签(只是标签!)和具有固定样式的 tss 文件,然后获取视图“合金方式”并添加到页面?

在这种情况下,最佳做法是什么?我还认为合金添加了它自己的控制器代码并像我现在一样在内部创建标签 - 所以它为 js 引擎添加了额外的操作来执行?性能和内存消耗当然是我主要关心的问题。

【问题讨论】:

【参考方案1】:

我认为使用 Alloy 方式更适合代码维护。稍后,如果你想修改你的标签,你只需要编辑你的 TSS。在性能方面,我不认为有很大的不同(它只是一个标签),并且 XML 视图最终转换为 Ti.UI.create。

如果您没有要实现的 JS 逻辑,您可以使用 $.UI.create 方法将您的 TSS 类应用于元素:http://docs.appcelerator.com/platform/latest/#!/api/Alloy.Controller.UI-method-create

var label = $.UI.create("Label", 
    classes: 'yourstyle',
    top : 30 //add other property like this
);
$.index.add(label);

【讨论】:

以上是关于Titanium - 在 Alloy 中动态创建和添加 UI 对象的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章

钛合金 Webview Ti.App.fireEvent 不工作

Titanium 在 tableview 中显示表中的数据

Titanium如何处理推送通知?

从 ScrollableView 中删除页面时,Titanium 应用程序崩溃

如何在 Appcelerator Titanium 项目中组织 JS 文件

Titanium:在不创建 ImageView 的情况下获取 png 高度