Mam problemy z aktualizowaniem obiektów w tytanowym Appcelerator Alloy,Stop tytanu: dostęp do interfejsu użytkownika z różnych kontrolerów?
Po prostu chcę móc dodać wiersz tabeli do tabeli, która znajduje się w innym kontrolerze/widoku, w którym obecnie jestem .... . Mam nadzieję, że będzie lepiej opisać poniżej to: s
basket.xml
<Alloy>
<Window id="basketWindow" class="container">
<TableView id="basketTable" />
<Button id="addItemButton" onClick="addItem">Add Item</Button>
</Window>
</Alloy>
basket.js
function addItem()
{
var itemList = Alloy.createController('item_list');
itemList.getView().open();
}
item_list.xml
<Alloy>
<Window id="itemListWindow" class="container">
<TableView id="itemListTable">
<TableViewRow id="item1" className="item" onClick="addItemToBasket">
Test Item
</TableViewRow>
</TableView>
</Window>
</Alloy>
item_list.js
function addItemToBasket()
{
var row = Ti.UI.createTableViewRow({title: 'Test Item'});
// Here i would ideally want to put something like $.basketTable.append(row);
// But nothing happens, im guessing it cant find $.basketTable as its in a different controller?
}
Czy ktoś wie z dala wokół to?
Dziękuję za przeczytanie :)
Świetnie! bardzo dziękuję Josiah, działa idealnie :) – David
Podoba mi się ta odpowiedź, ale jestem również ciekawy, jak to zrobić w bardziej "modelu-widoku-kontrolera". Załóżmy, że "Koszyk" był modelem lub kolekcją i chcę automatycznej synchronizacji z serwerem. Czy zdarzenia na poziomie aplikacji nadal będą dobrym rozwiązaniem? – Brad
Zdarzenie na poziomie aplikacji może wyzwalać globalne zdarzenie synchronizacji, w którym zmienił się "model", co kończy się informacją o każdym kontrolowanym modelu, a następnie aktualizuje jego widok. Więc niektóre z tych samych pojęć mają zastosowanie. Chociaż "wydarzenie na poziomie aplikacji" prawdopodobnie zostanie zastąpione zdarzeniem kręgosłupa w kolekcji koszyka. –