SWFAddress用于更改URL中的INDIVIDUAL参数

时间:2012-10-22 18:36:10

标签: url actionscript parameters swfaddress

我在动作脚本3中使用SWFAddress来控制导航和控件的网址,虽然我能够定位和更改特定参数,但我觉得我错过了更清晰,更一致的处理方式,甚至可能是一个功能或方法我不知道。

说我有一个网址,我想将 def 的第二个参数更改为 xyz

http://localhost/some-page/#/?param1=abc&param2=def&param3=ghi改为 http://localhost/some-page/#/?param1=abc&param2=xyz&param3=ghi

我目前正在做:

if (SWFAddress.getParameterNames().indexOf("param2") >= 0) {
    SWFAddress.setValue(SWFAddress.getPath() + "?"
       + SWFAddress.getQueryString().replace("param2=" + SWFAddress.getParameter("param2"), "param2=xyz"))

基本上,检查参数是否存在,检查其当前值是什么,然后使用 base ,'?"和查询重新创建整个网址,确保我将参数替换为参数的值,确保我不会错过等号。如果这个参数存在但是没有设置为任何东西,或者是否存在等号以及其他一些陷阱,那么这很容易出错,并且容易出错。

那么,我不能告诉SWFAddress更新url中的那个参数? SWFAddress.setParam的理论函数(" param2," xyz")。

有没有人编写自己的方法来微操作SWFAddress和url,超出了他们为你提供的setValue(val:String)的单个函数?

1 个答案:

答案 0 :(得分:0)

我认为简短的回答是否定的。根据{{​​3}},setParameter方法没有getParameter。查看代码,似乎URL没有作为类中的属性进行缓存,因此除了通过setValue方法之外,不能对其进行操作,当然,这会更新浏览器中的URL。

可能您已经在onChange事件中解析了URL,因此可以使用这些值来设置应用程序状态?如果是这样,当您在从Flash更新URL之前重新构建URL时,您不应该再次这样做。如果将深层链接属性存储在Model类的某个位置,则可以处理默认,更新和错误检查,而无需采用String操作。然后,您将使用这些属性重建URL,如果需要,您可以将该过程抽象为Model类中的方法。

您还应注意,以下行不是特别健壮,因为它会对param22sparam2等属性返回true:

if (SWFAddress.getParameterNames().indexOf("param2") >= 0) { }