cancel
Showing results for 
Search instead for 
Did you mean: 

addAspect(type, props) from flex

gokceng
Champ in-the-making
Champ in-the-making
hi all,
when i execute parameters in the webscript side one-by-one then there is not any problem. I mean

document.addAspect("myAspect");
document.properties["myType:anything"] = args["anything"];
document.properties["myType:something"] = args["something"];
document.save();

it works. But I want to add these 'something' and 'anything' to an associative array and so that I would be able to use

document.addAspect("myAspect", args["parameters"]);

I've used


var params:Object = new Object();
args[anything] = anyValue;
args[something] = someValue;
params.args = args;
var token:AsyncToken = service.send(params);
token.addResponder(this);

from the flex side but it didn't work out.
2 REPLIES 2

stevereiner
Champ in-the-making
Champ in-the-making
you might want to use json to send data to the javascript webscript (and use as3 corelib json support classes in your flex code)

gokceng
Champ in-the-making
Champ in-the-making
Thanks for reply steve. I've managed to solve this problem using 2 different arrays on the Flex side. I'm sending the code, maybe it helps others:

for each(var item:Object in formItems)
         {
            var formItem:FormItem = item as FormItem;
            var paramName:Object = formItem.name;
            var paramVal:String;
            if(formItem.getChildAt(0) is MaskedTextInput)
            {
               var formItemMasked:MaskedTextInput = formItem.getChildAt(0) as MaskedTextInput;
               paramVal = formItemMasked.fullText;
            }
            else if(formItem.getChildAt(0) is TextInput)
            {
               var formItemText:TextInput = formItem.getChildAt(0) as TextInput;
               paramVal = formItemText.text;
            }
            params[paramName] = paramVal;
            nameArray.push(new String("vsf:" + paramName));
            valArray.push(paramVal);
         }
         params.nameArray = nameArray;
         params.valArray = valArray;
         var token:AsyncToken = service.send(params);

and in JS side:

nameArray = argsM["nameArray"];
valArray = argsM["valArray"];

for (var i in nameArray)
{
   var propName = nameArray[i];
   var propVal = valArray[i];
   if(propName.toLowerCase().indexOf("date") != -1)
      props[propName] = new Date(propVal);
   else
      props[propName] = propVal;
}
document.addAspect("vsf:myAspect",props);

So that it takes 1 for loop and 1 line to add aspect to a node with setting properties.