2017-02-05 4 views
0

У меня есть компонент <search-bar>, у которого есть раскрывающийся список, который я буду использовать в качестве поиска фильтра. При нажатии на кнопку submit я выполнить следующий код:Vue router - Параметры запроса обработки

search() { 
    let query = { 
     status: this.selectedOrderStatus 
    }; 

    this.$router.push({ path: '/', query: query }) 
} 

Это Chage мой URL, как: http://localhost:8080?status=1 или http://localhost:8080?status=2 и его ок.

В другом компоненте (то есть / компонент) у меня есть место, часы для обработки URL-адрес изменения, как это:

watch: { 
'$route': 'loadOrders' 
}, 

Так что, когда в моем выборе я ниспадающего значение, компонент перезагружается.

Но, если я нахожусь на url http://localhost:8080?status=1 и я нажимаю кнопку отправки ничего не происходит. Мне нужно выбрать другое значение (например, 2), чтобы выполнить перезагрузку.

Как я могу обрабатывать перезагрузку каждый раз, когда нажимаю кнопку отправки? Потому что, я хотел бы снова нажать «Отправить», используя тот же параметр.

+0

Рассмотрите возможность использования навигационных ограждений vue-router (https://router.vuejs.org/en/advanced/navigation-guards.html). – jingman

ответ

1

Поскольку вы не изменяете параметры запроса при отправке, Vue не обнаруживает изменений и, соответственно, не перезагружает ваш компонент. Для вашего случая я бы рекомендовал позвонить в ваш loadOrders прямо с того места, где у вас есть форма для отправки.

Выделите событие, когда вы нажмете кнопку «Отправить», и старайтесь не полагаться на маршрут. https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication

 Смежные вопросы

  • Нет связанных вопросов^_^