AngularJS Property Bag

时间:2015-04-24 17:04:49

标签: angularjs

Angular有正式的属性包吗?我需要一种临时存储变量的方法,并可选择在应用程序之间保存它们。

1 个答案:

答案 0 :(得分:1)

为了节省时间,我鞭打了一个。如果有人需要它,它就在这里,但我很乐意在一个团队支持的框架中找到一个:

/**
 * Created by Fred Lackey on 4/24/15.
 */
(function (module) {

    var propertyBag = function (localStorage) {

        var items = [];

        var getIndex = function (key) {
            if (!key || !key.trim || key.trim().length < 1) { return -1; }
            if (items.length < 1) { return -1; }
            for (var i = 0; i < items.length; i += 1) {
                if (items[i].key.toLowerCase() === key.toLowerCase()) { return i; }
            }
            return -1;
        };
        var exists = function (key) {
            return (getIndex(key) >= 0);
        };

        var getItem = function (key) {
            var index = getIndex(key);
            return (index >= 0) ? items[index] : null;
        };
        var getValue = function (key) {
            var index = getIndex(key);
            return (index >= 0) ? items[index].value : null;
        };
        var putItem = function (key, value) {
            if (!key || !key.trim || key.trim().length < 1) { return; }
            var index = getIndex(key);
            if (index >= 0) {
                items[index].value = value;
            } else {
                items.push({ key: key, value: value });
            }
        };
        var removeItem = function (key) {
            var index = getIndex(key);
            if (index >= 0) { items.splice(index, 1); }
        };
        var count = function () {
            return items.length;
        };

        var saveBag = function (key) {
            if (!key || !key.trim || key.trim().length < 1) { return; }
            localStorage.add(key, items);
        };

        var loadBag = function (key) {
            if (!key || !key.trim || key.trim().length < 1) { return; }
            var bag = localStorage.get(key);
            if (!bag || !bag.length) { return; }
            for (var i = 0; i < bag.length; b += 1) {
                if (!bag[i].key || !bag[i].key.trim || bag[i].key.trim().length < 1) { continue; }
                putItem(bag[i].key, bag[i].value);
            }
            localStorage.remove(key);
        };

        return {
            getItem: getItem,
            exists: exists,
            getValue: getValue,
            putItem: putItem,
            removeItem: removeItem,
            count: count,
            save: saveBag,
            load: loadBag
        };
    };

    module.factory('propertyBag', propertyBag);

})(angular.module('common'));

如果您还没有本地存储代码(在上面的代码中引用),那么这是本地存储代码...

(function (module) {

    var localStorage = function ($window) {

        var store = $window.localStorage;

        var add = function (key, value) {
            value = angular.toJson(value);
            store.setItem(key, value);
        };

        var get = function (key) {
            var value = store.getItem(key);
            if (value) {
                value = angular.fromJson(value);
            }
            return value;
        };

        var remove = function (key) {
            store.removeItem(key);
        };

        return {
            add: add,
            get: get,
            remove: remove
        }

    };

    module.factory('localStorage', localStorage);

})(angular.module('common'));