0

我有四个看起来类似于这些的文件:

索引.xml

<Alloy>
    <Window>
        <View class="container">
            <View id="report">

                <!-- Adds a textfield for name entry -->
                <Require type="view" src="textfield" id="name"/>

                <Button id="checkNameValue" title="Check Value"  width="100" height="40" onClick="checkname"/>
            </View>
        </View>
    </Window>
</Alloy>

index.js

function checkname(e) {
    alert("Your name is " + $.name.getView('nameTextField').value);
}

文本字段.xml

<Alloy>
    <View id="nameView">
    </View>
</Alloy>

文本字段.js

var nameTextField = Titanium.UI.createTextField({
    hintText:"Type your name",
    height:40,
    width:300,
    top:20,
    borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});

$.nameView.add(nameTextField);

当我尝试单击 Button 来读取名称值时,出现错误:

message = "'undefined' is not an object (evaluating $.name.getView(\"nameTextField\").value')";

出了什么问题,我该如何解决?

4

2 回答 2

2

尝试将 textfield.js 更改为

$.nameTextField = Titanium.UI.createTextField({
    hintText:"Type your name",
    height:40,
    width:300,
    top:20,
    borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED
});

$.nameView.add($.nameTextField);

然后你的警报代码应该是这样的

alert("Your name is " + $.name.nameTextField.value);
于 2013-08-28T20:04:42.477 回答
0

只需将您的文本字段添加到包含的文件中,就像

文本字段.xml

<Alloy>
    <View id="nameView">
          <TextField value="" hintText="Type Here" id="textfield" />
    </View>
</Alloy>

现在您可以轻松地将文本字段访问到您的索引文件中:

index.js

alert($.name.textfield.value);
于 2015-05-07T11:58:28.677 回答