Добавить 'n' элементы в локальное хранилище (элементы получают из файла json) - PullRequest
0 голосов
/ 19 ноября 2018

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

Это мой код для получения данных из файла json:

    $scope.selection = "Selecciona una categoría";

    $scope.filterAvailable = function(available){
        var filteringBy = [];

        $http.get('/app/json/file.json')
        .then(function(data){
            $scope.listOfProducts = data.data.products;

                for(var i = 0; i< $scope.listOfProducts.length; i++){
                    if($scope.listOfProducts[i].available === true && $scope.listOfProducts[i].sublevel_id === $scope.inside){
                        filteringBy.push($scope.listOfProducts[i]);
                    }
                }

                $scope.dataOnFilter = filteringBy;
        });
    }

И с помощью ng-repeat я показываю информацию в моем представлении html:

<ul>
   <li ng-repeat="data in dataOnFilter"><a ng-click="selected(data)">{{data.name}}</a>
</ul>

Затем я улавливаю определенное значение и сохраняю локальное хранилище, нажимая на тег <a> со следующим фрагментом кода:

    $scope.selected = function(y){
        $scope.dataAdd = y;

        localStorage.setItem('valid', JSON.stringify($scope.dataAdd));
    }

Если я хочу увидеть выбранную информацию о модале, просто нажмите на другую кнопку:

    $scope.openCart = function(){
        $scope.myItems = JSON.parse(localStorage.getItem('valid'));

        $('#cart').modal({
            show: true
        });
    }

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

Кто-нибудь может мне помочь, пожалуйста?

Я использую AngularJs и Javascript.

1 Ответ

0 голосов
/ 19 ноября 2018

Вы должны хранить ваши данные в виде массива вместо объекта.Эта функция добавляет выбранное значение в массив с именем collection.

$scope.selected = function(y) {
    $scope.dataAdd = y;

    localStorage.collection = localStorage.collection || "[]";
    var collection = JSON.parse(localStorage.collection);
    collection.push($scope.dataAdd);
    localStorage.collection = JSON.stringify(collection);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...