Сообщение от Sufir
|
Мне нужно сделать своего рода тройной биндинг, т.е. изменение модели должно отражаться на адресной строке и наоборот, изменение параметра в строке должно менять модель.
...........
Но работает это довольно криво, то сбрасывается параметр в адресной строке (т.к. $watch сначала дважды вызывается со значениями null и undefined), приводит к лишним запросам к серверу, не обновляется селект... В общем, проблемный вариант.
|
Постановка задачи кривоватая - страдает ненужной избыточностью. Сделать, конечно можно и в такой постановке, но это довольно бессмысленно. Я бы поправил следующим образом:
- При начальной загрузке страницы значения фильтров брать из адресной строки, и как абсолютно верно заметил коллега a.malitsky - сразу же отправлять запрос на сервер.
- При редактировании селектов, изменения отображать в адресной строке односторонне. Обратный биндинг (адресная строка -> фильтры) в динамике (при уже открытой странице) совершенно избыточен и не нужен. Сложно представить умника, который будет редактировать строку поиска в гуглояндексе, редактируя адресную строку браузера (!! ), в то время как перед носом вполне человекоориентированный инпут (в твоём случае - селекты).
С этими поправками всё резко упрощается и ты, я уверен, с этим легко справишься.