Обновите значение диапазона, используя localStorage Angular

Я пытаюсь обновить значение диапазона ввода в Angular, используя localStorage,

Вот что у меня есть в моем HTML:

input type="range" id="myRange" value={{audio.volume}}  min="0" max="1" step="0.01" ng-model="audio.volume" ng-change="adjustVolume()"

Я хочу, чтобы значение диапазона было динамическим.

И это мой JS:

$scope.adjustVolume = function (){ 
  localStorageService.set("volume",$scope.audio.volume);
}

Таким образом, мне удается сохранить ключ "громкость" в localStorage, но если я обновлю страницу, положение ползунка диапазона вернется в 1, хотя localStorage по-прежнему установлен на другой номер.

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

2 ответа

Я решил эту проблему с помощью функции наблюдения, которая обновляет значение каждый раз, когда происходит изменение.

         $scope.$watch(function(){
            $scope.audio.volume = localStorageService.get("volume");                
            return true;
        }); 

Везде, где вы инициализируете свои свойства области действия внутри контроллера, вы должны присваивать значение $scope.audio.volume, используя значение из localStorage. например:

$scope.audio.volume = localStorageService.get("volume");

Но это будет работать только в том случае, если вы уже инициализировали свойство "аудио". Если громкость является единственным свойством "audio", которое вы хотите инициализировать, то ваша инициализация должна выглядеть следующим образом:

$scope.audio = {'volume':localStorageService.get("volume")};

Таким образом, пример контроллера будет выглядеть так:

var myApp = angular.module('myApp',[]);

myApp.controller('MyAudioController', ['$scope', function($scope) {
  $scope.audio = {'volume':localStorageService.get("volume")};//<--THIS IS IMPORTANT
  $scope.adjustVolume = function (){ 
     localStorageService.set("volume",$scope.audio.volume);
  }
}]);
Другие вопросы по тегам