2016-07-30 5 views
1

Legierungselement Targeting ist einfach, mitWie können Benutzeroberflächenelemente in Appcelerator dynamisch ausgerichtet werden?

views.xml:

<Label id="targetID1"/> 
<Label id="targetID2"/> 
<Label id="targetID3"/> 

controller.js:

$.targetID1.backgroundColor = "red"; 
$.targetID2.backgroundColor = "green"; 
$.targetID3.backgroundColor = "blue"; 

Aber ist es eine Möglichkeit, dynamisch, das Ziel passieren ID zu einer Funktion und setze die Werte in dieser Funktion? Insbesondere möchte ich die Hintergrundfarbe des zuletzt ausgewählten Objekts ändern.

Zum Beispiel so etwas wie:

var selectedObject; 

function clickOnObject(e) { 
selectedObject = e.source.id; 
return selectedObject; 
} 

changeBackgroundColor(selectedObject) 

//should change the background color of the selected object passed to the function 

function changeBackgroundColor(id) { 
    $.id.backgroundColor = "orange" //this does not work 
} 

Ich fand diese (Select dynamically generated element by id in Titanium Appcelerator), aber ich bin nicht sicher, ob dies die gleiche Sache.

Ich habe mehrere Felder und verwendet eine switch-Anweisung. Dies ist natürlich ziemlich umständlich.

Antwort

2

In Ihrem Fall könnten Sie selectedObject = e.source ohne die ID verwenden. Dann haben Sie das ganze Objekt in Ihrer Variablen. Innerhalb der changeBackgroundColor würden Sie ID ohne $ verwenden.

z.B. das funktioniert:

var obj; 

function fn(){ 
    obj.title = "testasdf" 
} 

$.btn1.addEventListener("click",function(e){ 
    obj = e.source; 
    fn(); 

}); 
$.btn2.addEventListener("click",function(e){ 
    obj = e.source; 
    fn(); 
}); 

mit zwei Schaltflächen innerhalb der index.xml erstellt. Aber Sie könnten dies ohne var obj verwenden und e.source einfach als Parameter an fn() übergeben. Hängt von Ihrem Anwendungsfall ab

+0

perfekt! Vielen Dank! – user24957

Verwandte Themen