В моем приложении я использую OptionSelector, чтобы выбрать из списка велосипедных станций. У меня также есть компонент карты с метками для каждой станции.
Когда я нажимаю метку, он также меняет OptionSelector на индекс соответствующей станции, так как это хороший UX.
Что плохо, UX - это то, как OptionSelector реагирует на это изменение индекса, которое само себя оживляет, как если бы оно было щелкнуто пальцем пользователя. Другими словами, еще долго после того, как пользователь нажал на маркер карты и получил всю необходимую ему информацию, OptionSelector все еще «крутится» до индекса станции.
Вот видео, демонстрирующее это поведение: https://www.youtube.com/watch?v=jXKWlAmNYsw
Я бы хотел, чтобы этот OptionSelector немедленно изменил свой индекс без анимации. Есть ли способ сделать это?
Вот как я сейчас делаю вещи. Я более чем счастлив, если меня поправят, если это неправильный путь. Я использую WorkerScript (поток QML, более или менее) для выполнения вызовов API. Когда этот WorkerScript возвращается, он перемещает OptionSelector следующим образом:
WorkerScript {
id: queryStationsWorker
source: "../js/getstations.js"
onMessage: {
[...]
// Move the OptionSelector to the corresponding station's index.
stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)
/*
* For the sake of clarity:
*
* getLastStationIndex() is a function which just returns an integer.
* lastStation is a U1DB database used for state saving.
* stationsModel is a model containing all of the stations.
*/
}
}
Любая помощь или понимание приветствуется - ура!