Flash :: Flex DataBinding Drilling Down Through Arrays
Jun 14, 2010
The help page on the BindUtils.bindProperty function:url...Has this to say:"For example, to bind the property host.a.b.c, call the method as: bindProperty(host, ["a","b","c"], ...)." But what if I need to bind to host.a.b[2].c? How do I do that?
I have an SQL Statement which I want to read the name fields from an SQL database. the code:
public function getAllGiberish():void { var stmt:SQLStatement = new SQLStatement(); stmt.sqlConnection = sqlConnection; stmt.text = "SELECT name FROM test3";
[code]....
This will pull the data from the db. However, in the list item it shows everything up as [object Object]. Upon debugging I can see that the data provider shows:
data[0] > name data[1] > name data[2] > name
Where the info that I want is the name within each data object. How do I easily access this? It is a problem I keep coming across and would like to work it out once and for all!
When the Flex SDK converts MXML to actionscript it generates a lot of databinding code. I don't want to bind a variable, for example if I know the variable will not change.
I can't seem to find a work around in Flex to disable the autogenerated databinding. Also, I was hoping this might also help with some of the runtime warnings thrown by databinding. To get around them, I sometimes use the following, which only throws syntax warnings (and don't appear in my console at runtime).
Syntax warning: Data binding will not be able to detect changes when using square bracket operator.
the new TextInput component which uses stagetext on 4.6 has this issue where if you bind a variable on it e.g view1...
and i push a new view e.g view2, and pop it, hence reloading view1. on initial load, I can see that the textinput display the variable abruptly then the text vanishes afterwards..
I'd like to note that the variable is a stored data, and can be access on any view.
I have an arrayCollection with strings in them, is there some way I can databind a RadioButtonGroup to the array collection? As we can do for combo boxes [code]There is no RadioButtonGroup.dataprovider property.
I need to dynamically bind properties of components created at runtime. In this particular case please assume I need to use bindProperty. I don't quite understand why the following simplistic test is failing (see code). When I click the button, the label text does not change. I realize that there are simpler ways to go about this particular example using traditional non-dynamic binding, but I need to understand it in terms of using bindProperty.
well, I have a combobox which I have bind his selectedItem property to a value object object, like this
<fx:Binding source="styles_cb.selectedItem.toString()" destination="_uniform.style"/> <fx:Declarations> <fx:XML id="config_xml" xmlns="" source="config.xml" /> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations>
the value object is a custom class with some setters and getters, and I want to set a property based of the value of the selectedItem of the combo, so inside the value object I have something like this
[Bindable] public function set style(value:String):void { _style = value; trace(value); }
my problem is that each time I change the combobox selection which in fact change the style property of the value object it does it 3 times, if I trace the value of the setter it actually do the trace 3 times, why?? how can I avoid this? I'm doing something wrong? or there is a better way to do it,
I have creating a distributed note taking application in flex, it basically is a notepad I can keep in my desktop tray. When I add notes and goes back to a server and saves it in a database.
To am struggling to design the application correctly, I want to have a Syncing service that polls the webserver for changes and updates an Array of Note objects. The problem is that my note corresponds mxml component, aka SingleNote component. There are four different cases when being, a. a note is updated from the server poll, in that case I want to singlenote to update the settings b. a note is added to the array from the server, in that case a new SingleNote needs to be created c. a SingleNote is added from client, in that case a Note is added to array, and sent back to server d. a SingleNote is change from client, in that case the Note is updated in the array and sent back to server
I'm trying to set up a form that presents a combobox when an ArrayCollection it's bound to has several items, and doesn't present one when it's empty or only has one item. I've tried doing this by creating this class, but unfortunately, the data provider I've bound to is never not empty at the time the setter executes.
public class ComboboxOrFail extends ComboBox { public function ComboboxOrFail() {
I am running into some trouble adding an array into another array to create a multi-dimensional array.The code appears as below:
var slideDataArray:Array = new Array(); var slideShowDataArray:Array = new Array(); slideDataArray[0] = xmlData.SlideShowParameters.SlideShowImagesDirectory;[code]........
I am looking for a means of placing the slideDataArray into a 'slot' or value of slideShowDataArray so that I can in the end pass the slideShowDataArray as a parameter to another function.As of now, the last slideDataArray appears 11 times (the loop runs 11 times) in slideShowDataArray and the way the code is written the slideDataArray is unique every iteration of the loop.
In my Main application I used label (like id=firstname) so we can use in main used firstname.text for databinding. But I have created canves custom component and load in main application using viewstack.In canves custom component how can I Bind label(id=firstname).I tried:var username:string = firstname.text but not show undefine firstname.How can I access all label and component in Main application to custom application.
I was wondering if it could be possible to create a databinding system in pure actionscript without using mx.binding.utils At least I would like to know what is the overhead of the databinding code and how exactly the ChangeWatcher knows when a property has been changed.
What I have is a class with static properties that I want to use as images. I would like the images to be configurable at run time but still have the defaults. So the Images class looks like:
[Code]...
Clicking the button will change the static property in the Images class to something else. The image defined in the MXML will get the binding event and update the image, but the custom component created in ActionSctipt will not be updated.
I've got a bit that loads a big chunk of xml data about products.I push product info into an array(e.g. productArray), then add that array to another array (e.g. allProductsArray)How do I sort those arrays? For instance, if I want to sort the allProductsArray based on the info in productArray[0]?Alternatively, would something other tha an array of arrays be a better route?This loader loads the same sort of info for many different clients, so the bit to sort on will change.
I'm trying to write a function where I can specify any amount of array, and the return value will be an array containing the contents of all of the specified arrays.I've done this, but it seems like a really slow and ugly way of doing it:
var ar1:Array = [1,2,3,4,5,6,7,8,9]; var ar2:Array = ['a','b','c','d','e','f','g','h']; function merge(...multi):Array[code].....
Is there an inbuilt and more efficient / nice way of achieving this? The result does not need to be in the same order as the input - completely unsorted is fine.
A little explanation: Im making a random arranging number Array. So instead of using a loop and assigning 0 to first array element, 1 to second, etc.I need to make it totally random but without repeating any numbers. To do that I made a second Array that will have the same number of children to serve as a reference.Each of them will be an Object with a property "num" , wich will be its actual number, and a property "called" wich defaults to false.Like this:
ActionScript Code: for(var i:int=0;i<vQuantity;i++){ ranArray.push( new Object() );
I've had a problem for awhile that was really odd. After some intense debugging, I realized the problem lied in setting an array equal to another array.[code] When setting one array equal to another, the values aren't copied over, but a reference to that memory is stored. So no matter which variable you change, they are both references to the same memory and thus both will reflect the changes.With other data types, this doesn't happen.I could fix it by looping through t1 and using push() to add each index from t1 into t2, but that seems a little messy.
correct syntax for pushing variables to arrays within arrays? I have searched many threads but found nothing that exactly answers my query.I have a class (Brigade) which amongst other variables contains an array (BrigadeUnits) This is the third element.. My Brigades are stored in an array called AllBrigades. I now need to fill the BrigadeUnits array with objects of my Units class.The hierarchy I want to create is as follows:
AllBrigades (array of Brigades) Brigade (object) BrigadeUnits (array within Brigade object) Unit (Object to be stored in BrigadeUnits array)
I have tried various approaches including the following, assuming that I am addressing the first Brigade in the array:
So I hava array Links and array Params with same langth NSo what I need is to create an object where for each link from Links I will be able to see param from ParamsAnd than for example to be abble to call something like
for each( item in object) if (item.param == "some value") { // some code
I am currently playing around with flex, I have C++ background, so I am not used to AS3.The problem is in the main*.mxml file I have fx:script block and I try to define a multidimensional array like that:
public var Board:Array = new Array(25);
I use a function to initialize the 2d-array:
public function initBoard():void { var i:int; var j:int;[code]....
This function gets called later on in the main loop to init and reset the "board" why doesn't it work. The only difference to the AS3 documentation is that it gets done in a function.
This has created a service and a package called valueObjects. In this valueObjects package is a class called "House", as I'd expect and I've worked out how to access these and their properties.
What I can't work out is how to work with the class called "Photos". Each house has a property "photos" of type Photos, which I'd expect to be an array but I can't for the life of me work out how to iterate it or see what it stores.
I know that an ArrayCollection is a wrapper over an Array, but what I wanted to know is when to choose one over the other? Will the over usage of ArrayCollections result in performance?
I am attempting to build an array of arrays that will with the following syntax. My output is definitely not what I am trying to achieve. Here is my code:
[Code]...
My output is coming out as 6 references to "Set3". There is obviously something wrong with my for loops, but I can't figure it out.
I've been kinda stuck in trying to organize data and bind them to a Repeater in one my applications.What I did at first, was to save an array of arrays, so that I could've accessed any value very easily. But then I realized that I needed to bind them to a Repeater, so I had to switch to an ArrayCollection of arrays. But the Binding issues weren't solved, since there are still arrays (not bindable) inside the ArrayCollection.Below an example of what I want to do:
<mx:Script> <![CDATA[ import mx.collections.ArrayCollection; [Bindable] public var arr:ArrayCollection = new ArrayCollection(
[code]....
the traces show that the array size changes, but the repeater doesn't update.
I have a chart and am trying to display the "volume" in a line chart as the primary series & the "temp" as a column chart as the secondary series...(the "compound" will be shown in the datatip):
[{date=Tue Feb 08 19:00:00 EST 2011, volume=1200, 1={temp=-50, compound=helium}, 0={temp=-45, compound=oxygen}}]
I can get the "volume" series to display fine, but cannot get the "temp" series to display...how do I access them? Right now I have:
I am trying to find the sum of one column's timings which is like '00:00:00' format. I am splitting the time string at ':' and storing into an array. Then trying to add array1[1] value to array2[1] value. Here I'm not getting type casting logic. I'm getting an error when I give int(array2[1]) += int(array1[1]) .
I retrieve XML data in Flex via HttpService. I have the resultFormat property on the HttpService instance set to HTTPService.RESULT_FORMAT_OBJECT. The result contains data similar to this:
<!-- ... --> <children> <item><!-- ... --></item>
[Code]....
I get an array named item beneath the element children when there is more than one item sibling. If there's only one, the conversion can't distinguish it from a scalar.
What do I need to change to have Flex convert all item elements to an array with 0 or more elements?
What would I have to do to get an array member children, dropping the item wrappers altogether?
The XML is generated by Struts on the server side. I always have the option to change the structure of the document there, but right now I'm interested in what I can do with Flex.