1

こんにちは皆さん、角度付きの localStorage でいくつかの情報を保存しようとしています。 $window をサービスに注入し、ファクトリ コール $localStorage を作成しました。

.factory('$localStorage', ['$window', function($window) {
        return {
            store: function(key, value) {
            $window.localStorage[key] = value;
            },
            get: function(key, defaultValue) {
            return $window.localStorage[key] || defaultValue;
            },
            storeObject: function(key, value) {
            $window.localStorage[key] = JSON.stringify(value);
            },
            getObject: function(key,defaultValue) {
            return JSON.parse($window.localStorage[key] ||     defaultValue);
            }
        }
        }])

いくつかのお気に入りを保存するために localStorage ファクトリを作成する他のファクトリがあります

factory("favoriteFactory", ["$resource", "baseURL", "$localStorage", function($resource, baseURL, $localStorage) {
        var favFac = {};
        var favorites = $localStorage.getObject("favorites", "[]");

        favFac.addToFavorites = function(index) {
            for (var i = 0; i < favorites.length; i++) {
                if (favorites[i].id == index)
                    return;
            }

            $localStorage.storeObject("favorites", {id: index});
            //favorites.push({id: index});
        };

        favFac.deleteFromFavorites = function (index) {
            for (var i = 0; i < favorites.length; i++) {
                if (favorites[i].id == index) {
                    favorites.splice(i, 1);
                }
            }
        }

        favFac.getFavorites = function () {
            return favorites;
        };

        return favFac;
    }])

問題は、お気に入りのアイテムを追加すると、配列に新しいアイテムを追加するのではなく、配列内でそれ自体が置き換えられることです。

事前に助けてくれてありがとう

4

3 に答える 3

2

あなたは保管中に間違ったことをしています。配列を単一のアイテムに置き換えています。Array.prototype.push() はコレクションの長さを返すことに注意してください。

enter code herefavFac.addToFavorites = function(index) {
        for (var i = 0; i < favorites.length; i++) {
            if (favorites[i].id == index)
                return;
        }
        favorites.push({id: index})
        $localStorage.storeObject("favorites", favorites);
        //favorites.push({id: index});
    };
于 2016-06-19T19:56:04.730 に答える
1

addToFavorites次のようにメソッドを変更するだけです

favFac.addToFavorites = function(index) {
            for (var i = 0; i < favorites.length; i++) {
                if (favorites[i].id == index)
                    return;
            }

            favorites.push({id: index});
            $localStorage.storeObject("favorites", favorites);

        };

最初に項目を追加してから、アレイをローカル ストレージに保存します。

于 2016-06-19T19:59:09.493 に答える