Ich scheine Schwierigkeiten zu aktualisieren Objekte in Titanium Appcelerator Legierung zu haben,Titanlegierung: Zugriff auf die Benutzeroberfläche von verschiedenen Controllern?
ich in grundsätzlich in der Lage sein will, eine Tabellenzeile in eine Tabelle hinzuzufügen, die in einer anderen Controller/Ansicht ist, dass ich bin zur Zeit .... . hoffentlich unter dem wird dies besser beschreiben: 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?
}
Wer weiß, weg, um dieses?
Danke fürs Lesen :)
Großartig! Vielen Dank Josiah, funktioniert perfekt :) – David
Ich mag diese Antwort, aber ich bin auch neugierig auf einen mehr "Model-View-Controller" Weg, dies zu tun. Angenommen, 'Basket' war ein Model oder eine Collection und ich möchte automatisch mit einem Server synchronisieren. Wären Ereignisse auf App-Ebene immer noch eine gute Lösung? – Brad
Ein Ereignis auf App-Ebene könnte ein globales Synchronisierungsereignis auslösen, bei dem sich das "Modell" geändert hat. Dies führt dazu, dass jeder Controller, der das Modell geändert hat, informiert wird, und aktualisiert dann seine Ansicht. Daher gelten einige der gleichen Konzepte. Obwohl "Ereignis auf App-Ebene" wahrscheinlich durch ein Backbone-Ereignis in der Basket-Sammlung ersetzt würde. –