Как передать данные из контроллера в appcelerator

Я создаю приложение с 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, в таблице Window1 отобразилась область формы.

1 ответ

Использование обратного вызова для передачи данных обратно в контроллер с табличным представлением является самым чистым.

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.

Другие вопросы по тегам