views:

214

answers:

2

I'm trying to create a button that will simply link back to the context root. I noticed flex has a @ContextRoot attribute that appears to work only in certain cases. For example, if I try to use it in the following mxml:

<mx:Button label="Back to Root" click="navigateToURL(new URLRequest(@ContextRoot()), '_parent')"/>

I get the following error: Error: Attributes are not callable.

I can't seem to find this technique explained anywhere, is there another way?

Thanks for the help! Dave

A: 

Well, the cleanest way I found was to use a function in the script block, and not use @ContextRoot like:

private function goBacktoHompage():void
 {
  baseURL = Application.application.url;
  var tempUrl:String = baseURL.substr(7,baseURL.length);
  var tempUrlArr:Array = tempUrl.split("/");
  var contextRoot:String = tempUrlArr[1];
  var u:URLRequest = new URLRequest("/" + contextRoot);
  navigateToURL(u,"_parent");
 }

I would assume there is an easier way that could use @ContextRoot, so any other answers that don't use relative paths would be welcomed!

Thanks to these sites for the help:

http://blog.devsandbox.co.uk/?p=174

[Adobe help docs on passing arguments]

-Dave

Dave Meurer
A: 

Thanks to http://devgirl.wordpress.com/ for this solution! I think it is better than the Application.application.url solution:

Use the HTTPService control:

<mx:HTTPService id="home" url="@ContextRoot()"/> 

And then in Action Script:

 navigateToURL(new URLRequest(home.url),"_parent");

works like a charm!

Dave Meurer