AngularJS запоминает «старые» значения области видимости

#javascript #angularjs

#javascript #angularjs

Вопрос:

У меня есть приложение AngularJS, в котором пользователь может выбрать элемент из списка. Затем они переходят на другой экран, который содержит элемент select, содержимое которого основано на выборе с первого экрана. Я выбираю элемент из этого элемента выбора, и он обновляет некоторые текстовые поля на экране, и все работает нормально.

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

Как мне сказать Angular забыть о предыдущих выборках, которые больше не находятся в области видимости? Должен ли я вручную сбрасывать все поля при нажатии «Назад»?

Комментарии:

1. Не глядя на код, помочь будет очень сложно. Не могли бы вы поделиться plunker, демонстрирующим вашу проблему?

Ответ №1:

Вам нужно сбросить область видимости:

 function TodoCtrl($scope) {
    $scope.data = [
        {text:'learn angular', done:true},
        {text:'build an angular app', done:false}
    ];

    $scope.orig = angular.copy($scope.data);

    $scope.reset = function() {
        $scope.data = angular.copy($scope.orig);
    };
}