SWFAddress используется для изменения ИНДИВИДУАЛЬНЫХ параметров в URL

Я использую SWFAddress в ActionScript 3 для управления URL-адресами для навигации и элементов управления, и хотя я могу нацеливать и изменять конкретные параметры, я чувствую, что мне не хватает более чистого и последовательного способа его обработки, возможно даже функции или метода, который я Я не в курсе.

Скажем, у меня есть URL, и я хочу изменить только второй параметр 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"))

По сути, проверяем, существует ли параметр, проверяем его текущее значение, затем воссоздаем весь URL, используя base, '? ", И запрашиваем, проверяя, что я заменяю параметр и значение параметра, чтобы не пропустить знак равенства. Это получение небрежно, и оно подвержено ошибкам, если параметр существует, но не установлен ни к чему, или есть ли знак равенства и множество других ловушек.

Итак, я не могу просто сказать SWFAddress обновить этот параметр в URL? Теоретическая функция SWFAddress.setParam("param2, "xyz").

Кто-нибудь кодировал свой собственный метод для микро-манипулирования SWFAddress и url, помимо той единственной функции, которую они предоставляют вам - setValue(val:String)?

1 ответ

Решение

Я думаю, что короткий ответ - нет. По документации нет setParameter идти с getParameter метод. Глядя на код, кажется, что URL не кэшируется как свойство в классе и, следовательно, не может манипулировать, кроме как через setValue метод, который, конечно, обновляет URL в браузере.

Предположительно, вы уже анализируете URL в своем onChange событие, чтобы вы могли использовать значения, чтобы установить состояние вашего приложения? Если это так, вам не нужно делать это снова, когда вы перестраиваете URL-адрес перед его обновлением из Flash. Если вы храните свойства ссылки на Model класс где-то вы можете обрабатывать значения по умолчанию, обновления и проверки ошибок, не прибегая к String манипуляция. Затем вы перестроили бы URL, используя эти свойства, процесс, который вы можете абстрагировать в метод в вашем Model класс, если требуется.

Следует также отметить, что следующая строка не особенно надежна, так как она вернет true для таких свойств, как param22 а также sparam2:

if (SWFAddress.getParameterNames().indexOf("param2") >= 0) { }
Другие вопросы по тегам