SWFAddress используется для изменения ИНДИВИДУАЛЬНЫХ параметров в URL
Я использую SWFAddress в ActionScript 3 для управления URL-адресами для навигации и элементов управления, и хотя я могу нацеливать и изменять конкретные параметры, я чувствую, что мне не хватает более чистого и последовательного способа его обработки, возможно даже функции или метода, который я Я не в курсе.
Скажем, у меня есть 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"))
По сути, проверяем, существует ли параметр, проверяем его текущее значение, затем воссоздаем весь 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) { }