Угловая выборка не обновляется при смене модели

0

У меня есть следующая проблема с угловым и html select -input: когда пользователь загружает страницу, мой select пуст, пока данные не будут загружены и не будут возвращены из соответствующей службы. В этом случае select заполняется правильно.

Тем не менее, пользователь должен иметь возможность фильтровать модель одним нажатием кнопки.

Когда я нажимаю кнопку, новый запрос отправляется в REST-API, а ответ содержит новую модель для select.

К сожалению, select не будет корректно обновляться, даже когда я изменю его модель

Вот какой код для иллюстрации моей проблемы:

     // This happens in my controller
     EventService.getAvailableRooms(requestObject).then(function successCallback(response){
        // sanatizeRoomTypes is used to generate user-friendly names instead of [1, 2,..]
        vm.rooms = DataSanatizer.sanatizeRoomTypes(response.data);

    }, function errorCallback(response){


        console.log(response)
    });

vm.rooms - это модель моего select:

<select id="roomSelect" ng-model="eventCtrl.selectedRooms"
                                ng-options="room.name group by room.type for room in eventCtrl.rooms track by room.id" multiple required>
</select>

В некоторых случаях выбор дублирует его или теряет записи. Кажется, что есть какая-то проблема привязки данных.

Благодаря,

Теги:
drop-down-menu

1 ответ

0

Попробуйте обернуть изменения модели в $ scope.apply:

$scope.$apply(function() {
    $scope.data.myVar = "Another value";
});

Читайте здесь для получения дополнительной информации: http://tutorials.jenkov.com/angularjs/watch-digest-apply.html

Вы также можете использовать $ scope. $ Watch для изменения переменных $ scope, чтобы обновить их в вашем представлении.

  • 0
    Спасибо, но, к сожалению, это не работает. Тот же результат.
  • 0
    Вы пытались использовать $ scope. $ Watch следующим образом: $ scope. $ Watch (function (scope) {return scope.data.myVar}, function (newValue, oldValue) {document.getElementById (""). InnerHTML = "" + newValue + "";});
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню