Well, technically, no; you will need some kind of reference to each page–otherwise the repeater would have no way to know which page to load in the inline frame. You don’t have to manually create this in the repeater dataset, though. You could come up with an algorithm for naming your pages, e.g., “iconNNN” : “icon001”, “icon002”, “icon003”, etc. and use this with the basic method I showed in the Home (b) page to call a page by its name. Then you’d need a recursive function to repetitively add rows to your repeater–using your naming algorithm.
I’ll pause here to mention this is starting to get beyond “prototyping” and into full-on functional programming. If you really have 300 or more icons/pages and want to create a kind of contact sheet to show them all, you are better off with a real programming or graphics application instead of a prototyping application like Axure. Potentially though, you could have a server-side script (e.g., Perl, Python, ASP) create a contact sheet webpage (or PDF, PNG, TIFF, …anything with a URL you can access) and then just load that into one inline frame–or have one page in your prototype simply load that URL in it’s Page Loaded event. Come to think of it, I’ve had to do just this–probably a dozen years ago–with GraphicsMagick, which has a nifty and fast ability to make a contact page from a folder of images.
Alright, back to Axure and prototyping… This was a good challenge to see if it could all come together. Take a look at this updated .rp file:
repeater page references.rp (216.5 KB)
The Home ( c ) page has a blank repeater that “creates itself” by recursively adding rows. Here’s how it works:
- The Page Loaded event initializes the global variable, OnLoadVariable to zero.
- The Loaded event of the repeater has a conditional case of “If value of OnLoadVariable is less than 12” (the number of icon pages.) which increments OnLoadVariable by 1, adds a “blank” row, then fires Loaded again --so that 12 rows are created.
- Each time a row is added, the repeater’s Item Loaded event is fired. This loads a page in the inline Frame widget (within the repeater) using this expression:
icon[[ ('x00' + Item.index).slice(-3) ]].html
A. The resulting effect for the first row, with index of 1 (Item.index), is: “icon001.html” --the URL of the first icon page.
B. The ‘x00’ and .slice(-3) is a method to ensure leading zeros in the page number. I got this from an old thread here, thanks to the master, josephxbrick : Time stopwatch
So, you’ll have to know how many pages to load (changing the “12” in step 2 to N) and if you later add pages, you’ll need to update this again. As the number of rows in the repeater increases, the page load time will increase (and it will vary depending on the operating speed of the computer/device/browser.)
With some adjustments to the expression in step 3 you could allow for more complex page names, like “AddressBookIcon_001” , “MenuIcon_002” , “rabbit_003” , etc. as long as there is a consistent numbering scheme (or other hash system) where you can parse out the sequence indicators (just the numbers.)