我一直在构建我的第一个Titanium Alloy应用程序,我有一个5步注册表单,其中包含分布在5个视图中的不同表单字段。在我的最后一步,我想发布表单元素的值。访问每个字段值的最佳方法是什么?例如。在screen5中如何获取screen1视图中$ .name字段的值?
以下是我的一些代码:
<ScrollableView id="indexSV" showPagingControl="false" scrollingEnabled="false" top="0">
<Require src="screen1" id="screen1"></Require>
<Require src="screen2" id="screen2"></Require>
<Require src="screen3" id="screen3"></Require>
<Require src="screen4" id="screen4"></Require>
<Require src="screen5" id="screen5"></Require>
</ScrollableView>
以下是屏幕的结构:
<Alloy>
<View>
<Label top="20">YOUR NAME:</Label>
<TextField top="5" id="name" />
<Button top="20" right="10%" id="btnNext" width="120" onClick="next" class="next">NEXT STEP</Button>
</View>
</Alloy>
答案 0 :(得分:0)
以下是获取值的方法
function next(e) {
var value = $.name.value;
}
由于
答案 1 :(得分:0)
目前我可以想到以下两种方式:
<强> 1。在alloy.js
:
在alloy.js
中定义全局变量如下:
Alloy.Globals.signUpValues = {
name : "",
email : ""
};
现在在屏幕的控制器中,将获取的值分配给Alloy.Globals.signUpValues
。就像screen1
的控制器一样,你可以做类似的事情:
function next() {
Alloy.Globals.signUpValues.name = $.name.value;
}
最后,您可以使用以下方法获取所需屏幕中的所有值:
var signupJSON = Alloy.Globals.signUpValues;
<强> 2。在所需视图中使用回调:您可以在需要屏幕的控制器中触发该功能,并通过视图控制器将响应发送回主控制器。所以你可以这样做:
在主控制器中:
$.screen1.callback(function(name)
{
$.screen5.initName(name); //pass name value to screen5's controller
});
在screen1的控制器中:
var nextCallback;
exports.callback = function (callback)
{
nextCallback = callback;
};
function next(e) {
nextCallback($.name.value);
}
在screen5的控制器中:
var name;
exports.initName = function (nameVal)
{
name = nameVal;
};
P.S: IMO,选项1更清晰,易于维护。