钛合金获得视野的价值

时间:2014-12-01 22:43:39

标签: titanium titanium-alloy

我一直在构建我的第一个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>

2 个答案:

答案 0 :(得分:0)

以下是获取值的方法

   function next(e) {
    var value = $.name.value;
   }

由于

答案 1 :(得分:0)

目前我可以想到以下两种方式:

<强> 1。在alloy.js

中定义全局JSON对象

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更清晰,易于维护。