Ti.UI Basics: How to use AlertDialog in Alloy

Rene Pot
All Titanium
Published in
3 min readMar 20, 2020

AlertDialogs are things that are used often in apps. Whether it is for trivial notifications or confirmation of deleting things. And yet, most people still use the classic method of creating AlertDialogs in Alloy.

So here’s a couple tricks how to use AlertDialogs better in Alloy. Alloy is always very flexible in offering you to choose between putting elements in XML or TSS, I prefer TSS with most elements to keep my XML as clean as possible.

1: Add to View

First you want to add your alertDialog to your View. You can add this to the root of your View, within the <Alloy> tag of course.

<Alloy>
<Window></Window>
<AlertDialog id="myAlert" />
</Alloy>

2: Add Styling Properties

With the AlertDialog in your View, you can now easily style using all the properties you can find in the docs. A very basic setup includes a title and message of course.

"#myAlert": {
title: "Hello",
message: "Hello, World!"
}

This will give you a very basic AlertDialog with just the title and a message as you would expect.

3: Add ButtonNames

There are 2 way to add ButtonNames to the AlertDialog. One is directly through the View like this:

<AlertDialog>
<ButtonNames>
<ButtonName>Confirm</ButtonName>
<ButtonName>Cancel</ButtonName>
<ButtonName>Help</ButtonName>
</ButtonNames>
</AlertDialog>

Another way to do this, which is my favorite, is put the ButtonNames in the styling. Of course this all depends on your personal preference, but with every text attribute including button titles & label texts, I always put it in tss. This gives me more overview of all the texts, and I never have to guess where they are. Anyways, to add it to the styling file, just add this:

buttonNames: [
"Confirm",
"Cancel",
"Help"
]

And with that, you’ve achieved the same as with the view above.

4. Listen for click event

Because of the power of Alloy, you don’t have to bind a click event in the controller. Some people prefer adding all event listeners inside the controller file, but I will always recommend adding event listeners in the view itself. To do this with the AlertDialog, adjust your AlertDialog in the View like this:

<AlertDialog id="myAlert" onClick="clickMyAlert" />

Then, in the controller add the listener function

function clickMyAlert(e) { }

Of course, you can change the name of that function to whatever you want, I just included the id property in the function name in the format [event][id]. This always tells me exactly what the function does when looking in the controller, without actually having to look in the view.

5. Show the dialog

Now whenever you want to display the dialog, you can just call the method show on the dialog

$.myAlert.show();

6. Do what you need to do

So now you’ve got the entire flow set up, you can customize your AlertDialog in the tss, you can show the AlertDialog, and you can listen for the event. To customize it more, or to know what kind of event details you’re getting in the event callback, just take a look at the documentation.

--

--