我正在使用actionscript 3中的SWFAddress来控制导航和控件的urls,虽然我能够针对和更改特定的参数,但我觉得我缺少一种更干净、更一致的处理方法,甚至可能是我不知道的特性或方法。
假设我有一个url,我想把def的第二个部分改为xyz。
http://localhost/some-page/#/?param1=abc¶m2=def¶m3=ghi改为http://localhost/some-page/#/?param1=abc¶m2=xyz¶m3=ghi
我目前正在做:
if (SWFAddress.getParameterNames().indexOf("param2") >= 0) {
SWFAddress.setValue(SWFAddress.getPath() + "?"
+ SWFAddress.getQueryString().replace("param2=" + SWFAddress.getParameter("param2"), "param2=xyz"))本质上,检查param是否存在,检查它的当前值是什么,然后使用base '?“重新创建整个url,并进行查询,确保我替换了参数和参数的值,确保我没有遗漏等号。这是草率的,如果param存在但没有设置为任何内容,或者是否存在等号,以及其他许多陷阱。
所以,我不能告诉SWFAddress更新url中的一个参数吗?SWFAddress.setParam的一个理论函数(“param2,"xyz")。
是否有人编写了自己的方法来对SWFAddress和url进行微操作,除了为您提供setValue(val:String)的单个函数之外?
发布于 2012-10-22 23:05:23
我认为简短的回答是否定的。根据文档,没有setParameter与getParameter方法一起使用。从代码来看,URL似乎不是作为类中的属性缓存的,因此只能通过setValue方法进行操作,该方法当然会在浏览器中更新URL。
您可能已经在解析onChange事件中的URL,以便可以使用这些值来设置应用程序状态?如果是这样的话,当您在从Flash更新URL之前重新构建URL时,不需要再次这样做。如果将深度链接属性存储在Model类的某个位置,则可以处理默认、更新和错误检查,而无需诉诸String操作。然后使用这些属性重新构建URL,如果需要,可以将该进程抽象为Model类中的方法。
您还应该注意到,下面的行并不特别健壮,因为它将返回param22和sparam2等属性的true
if (SWFAddress.getParameterNames().indexOf("param2") >= 0) { }https://stackoverflow.com/questions/13017581
复制相似问题