查询从Flex访问的AngularJS URL中的参数顺序

时间:2013-12-04 08:20:33

标签: angular-ui query-parameters

我有一个用AngularJS(版本1.0.8)编写的Web应用程序。 我正在使用UI-Router(0.4。)来处理该应用程序的状态。

我尝试从另一个Flex应用程序(4.0)访问该应用程序的URL。

在Angular应用中,我有网址:

http://localhost:8080/myApp/somePage?param01=aaa&param02=bbb

在该应用程序的Angular的module.config()中,我做了类似的事情:

$stateProvider.state("somePage", {
    url: "/somePage?param01&param02"
    templateUrl: "view/somePage.html"
    controller: "SomePageController"
});

现在在Flex应用程序中,我有以下代码:

var variables:URLVariables = new URLVariables();
variables.param01 = "aaa";
variables.param02 = "bbb";
var url = new URLRequest();
url.data = variables;
navigateToURL(url, "_self");

问题是,当我按下导航到Angular应用程序的Flex应用程序中的按钮时,我会收到以下网址:

http://localhost:8080/myApp/somePage?param02=bbb&param01=aaa

在URL的查询参数中,param02位于param01之前。 然后,在Angular的ui-router中,我猜,它被更改为常规URL:

http://localhost:8080/myApp/somePage?param01=aaa&param02=bbb

我的问题在于浏览器导航 - 当用户点击“返回”时,浏览器将无法导航回Flex应用程序的URL,因为历史记录中还有另一个URL,其中查询参数已切换。用户必须单击“返回”两次...

此外,尽管这是一个对问题不必要的详细说明,因此您可以跳过它,如果您愿意,用户可以从多个位置(即不仅仅是从Flex应用程序)访问该Angular应用程序。当用户在Angular应用程序中单击“保存”或“取消”时,应将其重定向到原始页面。我计划使用history.back()功能,但由于上述现象,切换查询参数的URL会出现问题。

非常感谢, 丹尼尔

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题,目前通过改变我在Flex中使用navigateToURL的方式。

我现在有这样的东西:

var queryParams:String = "param01=aaa&param02=bbb";
url.url += "?" + queryParams;
navigateToURL(url, "_self");

这样,当我使用由我构建的字符串而不是URLVariables类时,我可以控制URL查询参数的顺序。

不幸的是,当我使用URLVariables类时,我仍然不知道每次使用该函数时为什么URL查询参数的排序方式不同...