我正在使用appcelerator构建应用程序。
我有Window1.js。在此窗口中,用户可以看到包含某些行的TableView。如果用户单击按钮,则显示另一个窗口(socialHistory_modal.js)作为模态。在socialHistory_modal中,用户编译表单。然后,如果用户单击“保存”按钮,我希望从表单中获取信息并将其显示在表中。
所以这是 Window1.js
的代码// Arguments passed into this controller can be accessed via the `$.args` object directly or:
var args = $.args;
var lang = Alloy.Globals.LANG;
var langDefault = Alloy.Globals.LANG_DEFAULT;
function openModal(e){
Alloy.createController("socialHistory_modal", args).getView().open();
}
Window1.xml
<Alloy>
<View class="containerClinicalFolder" >
<TableView id="table" class="table" onClick="doClick">
<TableViewSection id="table" >
</TableViewSection>
</TableView>
<Button id="button" class="buttonLanguage" onClick="changeLanguage"
visible="false" traduzione="true"></Button>
<ImageView class="buttonAdd" onClick="openModal"></ImageView>
</View>
</Alloy>
socialHistory_modal.xml
<Alloy>
<Window id="modal_add_edit" onClose="cleanup" modal="true">
<View class="container">
<Label id="title" class="title"/>
<View class="separator"></View>
<TableView id="table" height="Titanium.UI.SIZE" layout="vertical">
<TableViewRow class="menu_item" top="25">
<Label id="description" class="label" left="12" />
<Picker id="picker" left="20" selectionIndicator="true">
<PickerColumn id="column1">
<PickerRow title="Esposizione Tossica"/>
<PickerRow title="Stato civile"/>
<PickerRow title="Diet"/>
</PickerColumn>
</Picker>
</TableViewRow>
<TableViewRow class="menu_item" top="25">
<Label id="quantity" class="label"left="12" />
<TextField id="textQuantity" borderStyle="Ti.UI.INPUT_BORDERSTYLE_ROUNDED"
width= "250" height= "60"></TextField>
</PickerColumn>
</Picker>
</TableViewRow>
</TableView>
<View class="separator"></View>
<TableView id="tableButton" width="Titanium.UI.FILL" layout="horizontal">
<TableViewRow class="menu_item" top="25">
<Button id="buttonClose" class="buttonClose" onClick="onClose" ></Button>
<Button id="buttonSave" class="buttonSave"></Button>
</TableViewRow>
</TableView>
</View>
</Window>
</Alloy>
所以我希望如此,如果用户点击socialHistory_modal的Save按钮,那么窗口的值将显示在Window1的表中
答案 0 :(得分:0)
使用回调将数据传递回控制器并使用表视图是最干净的。
window1.js
function openModal(e){
Alloy.createController("socialHistory_modal", {args:args, callback: mycallback).getView().open();
}
function mycallback(e){
// do something with the data you sent back from the modal
}
socialHistory_modal.js
function onClose() {
// do your local stuff
if (args.callback $$ (typeof args.callback === 'function)) {
args.callback({the: stuff, you:wantToPassBack});
}
}
你也可以使用骨干调度程序触发一个事件,触发在Window1.js范围内发生的事情