У меня есть список выбора, параметры которого основаны на выбранном значении. Например, выбранная опция по умолчанию равна 7, а остальные четыре опции всегда находятся в пределах 2 от этого значения. Поэтому изначально [5, 6, 7, 8, 9]
- мои варианты.Как обновить опции выбора после выбора опции
Если пользователь выбирает 5
, то опции выбора ДОЛЖНЫ обновляться до [3, 4, 5, 6, 7]
. Действительно, запрос POST, привязанный к ng-change
, срабатывает успешно и после обновления страницы доступны следующие параметры: [3, 4, 5, 6, 7]
. Моя проблема в том, что эти параметры не обновляются мгновенно при выборе опции. В настоящее время необходимо обновить страницу, чтобы увидеть это изменение.
Ниже приведен соответствующий код. В основном я ищу, чтобы массив maxOptions
мгновенно обновлялся при выборе опции.
HTML:
<select ng-options="option for option in linked.maxOptions" ng-model="linked.selectedMax" ng-change="linked.changeMax()"></select>
Контроллер:
var vm = this;
vm.maxOptions = [];
var getplayerInfo = function() {
playersService.getPlayerInfo({
playerId: playerId
}).$promise.then(function(player) {
vm.player = player;
for (var i = player.max_points - 2; i < customer.max_points + 3; i++) {
vm.maxOptions.push(i);
}
vm.selectedMax = player.max_points;
});
};
var init = function() {
getplayerInfo();
};
init();
vm.changeMax = function() {
playersService.setMaxPoints({
playerId: playerId,
max: vm.selectedMax
}, {}).$promise.then(function(res){
return res.success;
}, function(res) {
alert('Couldn\'t update number of points to ' + vm.selectedMax + ':' + res.success);
});
};
Я думаю, что мне нужно сделать что-то в пределах резолюции $promise
для обновления пользовательского интерфейса мгновенно.
Любые советы о том, как наилучшим обновление этого массива в '$ обещании 'разрешение? Кроме того, обновление массива достаточно, чтобы обновить интерфейс? Я предполагаю, что это связано с двусторонней привязкой данных. – MattDionis
@MattDionis Обновлено сообщение с фрагментом кода. Да, обновление массива также обновит DOM, это угловой способ. Если это не так, то, возможно, разместите плункер, чтобы мы могли посмотреть. – user2718281