0

试图从我的主控制器更新视图中的标签文本。在不同控制器的视图中访问表单元素

我有1个控制器:index.js 然后我有2个视图:index.xml(用于iOS)和android_index.xml(用于android)。

在链接到控制器I能够访问形式的元素,如这在我的index.js文件

$.formLabel.text = "updated text" 

但其他视图的视图,我控制器存储在象一个变量。这个视图基本上是一个孤儿,因为它没有控制器,我只需右键单击并创建一个没有控制器的新视图。

var win=Alloy.createController('android_index').getView(); 

和我似乎无法访问表单元素在我的index.js有:

win.formLabel.text = "updated text" 

当我尝试它说,这是不确定的

这个问题的任何帮助非常感谢!

回答

1

getView()方法返回控制器的第一个顶级的观点:https://docs.appcelerator.com/platform/latest/#!/api/Alloy.Controller-method-getView

如果你想获得一个子视图,你可以这样做:

var win=Alloy.createController('android_index'); //reference to your controller 
win.formLabel.text = "updated text"; 

或这个工程太:

win.getView('formLabel').text = "updated text"; 
+0

这些不适合我。我得到了这个错误: 未捕获类型错误:对象#没有方法'getView' 1件事我不确定我是否解释得很好。只有1个控制器(index.js)和2个视图(index.xml,android_index.xm)。 android_xml视图是一个孤儿,因为它没有像index.js那样分配给它的控制器(index.js - > index.xml)(no controller - > android_index.xml)。基本上我只使用:win.add(userLabel);添加东西到Android视图,然后打开它使用win.open() –

+0

如果android_xml视图没有控制器我可以不访问android_xml视图中的lblUsername标签? –

+0

@MikeKellogg你确定你改变了你的代码来调用'Alloy.createController('android_index').formLabel'而不是'Alloy.createController('android_index').getView().formLabel'?因为这就是你得到的错误似乎表明。 –

相关问题