{"id":13403849,"url":"https://github.com/grevory/angular-local-storage","last_synced_at":"2025-05-14T00:11:49.719Z","repository":{"id":4429470,"uuid":"5567476","full_name":"grevory/angular-local-storage","owner":"grevory","description":"An AngularJS module that gives you access to the browsers local storage with cookie fallback","archived":false,"fork":false,"pushed_at":"2017-08-29T14:16:59.000Z","size":333,"stargazers_count":2821,"open_issues_count":65,"forks_count":585,"subscribers_count":109,"default_branch":"master","last_synced_at":"2025-05-10T15:40:39.581Z","etag":null,"topics":["angular","angularjs","cookie","javascript","localstorage"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grevory.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-08-27T06:31:44.000Z","updated_at":"2025-04-19T19:58:34.000Z","dependencies_parsed_at":"2022-09-01T20:51:09.162Z","dependency_job_id":null,"html_url":"https://github.com/grevory/angular-local-storage","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grevory%2Fangular-local-storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grevory%2Fangular-local-storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grevory%2Fangular-local-storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grevory%2Fangular-local-storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grevory","download_url":"https://codeload.github.com/grevory/angular-local-storage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253633116,"owners_count":21939389,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","angularjs","cookie","javascript","localstorage"],"created_at":"2024-07-30T19:01:35.432Z","updated_at":"2025-05-14T00:11:44.703Z","avatar_url":"https://github.com/grevory.png","language":"JavaScript","readme":"angular-local-storage\n=====================\nAn Angular module that gives you access to the browsers local storage\n\n[![NPM version][npm-image]][npm-url]\n[![Build status][travis-image]][travis-url]\n[![Test coverage][coveralls-image]][coveralls-url]\n[![Dependency Status][david-image]][david-url]\n[![License][license-image]][license-url]\n[![Downloads][downloads-image]][downloads-url]\n\n## Table of contents:\n- [![Gitter][gitter-image]][gitter-url]\n- [Get Started](#get-started)\n- [Video Tutorial](https://www.youtube.com/watch?v=I4iB0kOSmx8)\n- [Development](#development)\n- [Configuration](#configuration)\n - [setPrefix](#setprefix)\n - [setStorageType](#setstoragetype)\n - [setDefaultToCookie](#setdefaulttocookie)\n - [setStorageCookie](#setstoragecookie)\n - [setStorageCookieDomain](#setstoragecookiedomain)\n - [setNotify](#setnotify)\n - [Example](#configuration-example)\n- [API Documentation](#api-documentation)\n - [isSupported](#issupported)\n - [changePrefix]\n - [getStorageType](#getstoragetype)\n - [set](#set)\n - [get](#get)\n - [keys](#keys)\n - [remove](#remove)\n - [clearAll](#clearall)\n - [bind](#bind)\n - [deriveKey](#derivekey)\n - [length](#length)\n - [cookie](#cookie)\n    - [isSupported](#cookieissupported)\n    - [set](#cookieset)\n    - [get](#cookieget)\n    - [remove](#cookieremove)\n    - [clearAll](#cookieclearall)\n\n## Get Started\n**(1)** You can install angular-local-storage using 3 different ways:\u003cbr/\u003e\n**Git:**\nclone \u0026 build [this](https://github.com/grevory/angular-local-storage.git) repository\u003cbr/\u003e\n**Bower:**\n```bash\n$ bower install angular-local-storage --save\n```\n**npm:**\n```bash\n$ npm install angular-local-storage\n```\n**(2)** Include `angular-local-storage.js` (or `angular-local-storage.min.js`) from the [dist](https://github.com/grevory/angular-local-storage/tree/master/dist) directory in your `index.html`, after including Angular itself.\n\n**(3)** Add `'LocalStorageModule'` to your main module's list of dependencies.\n\nWhen you're done, your setup should look similar to the following:\n\n```html\n\u003c!doctype html\u003e\n\u003chtml ng-app=\"myApp\"\u003e\n\u003chead\u003e\n\n\u003c/head\u003e\n\u003cbody\u003e\n    ...\n    \u003cscript src=\"//ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js\"\u003e\u003c/script\u003e\n    \u003cscript src=\"bower_components/js/angular-local-storage.min.js\"\u003e\u003c/script\u003e\n    ...\n    \u003cscript\u003e\n        var myApp = angular.module('myApp', ['LocalStorageModule']);\n\n    \u003c/script\u003e\n    ...\n\u003c/body\u003e\n\u003c/html\u003e\n```\n## Configuration\n### setPrefix\nYou could set a prefix to avoid overwriting any local storage variables from the rest of your app\u003cbr/\u003e\n**Default prefix:** `ls.\u003cyour-key\u003e`\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setPrefix('yourAppName');\n});\n```\n### setStorageType\nYou could change web storage type to localStorage or sessionStorage\u003cbr/\u003e\n**Default storage:** `localStorage`\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setStorageType('sessionStorage');\n});\n```\n### setDefaultToCookie\nIf localStorage is not supported, the library will default to cookies instead. This behavior can be disabled.\u003cbr/\u003e\n**Default:** `true`\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setDefaultToCookie(false);\n});\n```\n### setStorageCookie\nSet cookie options (usually in case of fallback)\u003cbr/\u003e\n**expiry:** number of days before cookies expire (0 = session cookie). **default:** `30`\u003cbr/\u003e\n**path:** the web path the cookie represents. **default:** `'/'`\u003cbr/\u003e\n**secure:** whether to store cookies as secure. **default:** `false`\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setStorageCookie(45, '\u003cpath\u003e', false);\n});\n```\n### setStorageCookieDomain\nSet the cookie domain, since this runs inside a the `config()` block, only providers and constants can be injected.  As a result, `$location` service can't be used here, use a hardcoded string or `window.location`.\u003cbr/\u003e\n**No default value**\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setStorageCookieDomain('\u003cdomain\u003e');\n});\n```\n\nFor local testing (when you are testing on localhost) set the domain to an empty string ''. Setting the domain to 'localhost' will not work on all browsers (eg. Chrome) since some browsers only allow you to set domain cookies for registry controlled domains, i.e. something ending in .com or so, but not IPs **or intranet hostnames** like localhost. \u003c/br\u003e\n\n### setNotify\n\nConfigure whether events should be broadcasted on $rootScope for each of the following actions:\u003cbr/\u003e\n**setItem** , default: `true`, event \"LocalStorageModule.notification.setitem\"\u003cbr/\u003e\n**removeItem** , default: `false`, event \"LocalStorageModule.notification.removeitem\"\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setNotify(true, true);\n});\n```\n### Configuration Example\nUsing all together\n```js\nmyApp.config(function (localStorageServiceProvider) {\n  localStorageServiceProvider\n    .setPrefix('myApp')\n    .setStorageType('sessionStorage')\n    .setNotify(true, true)\n});\n```\n## API Documentation\n## isSupported\nChecks if the browser support the current storage type(e.g: `localStorage`, `sessionStorage`).\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  if(localStorageService.isSupported) {\n    //...\n  }\n  //...\n});\n```\n### setPrefix\nChange the local storage prefix during execution\n**Returns:** `Null`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  localStorageService.setPrefix('newPrefix');\n  //...\n});\n```\n### getStorageType\n**Returns:** `String`\n```\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  var storageType = localStorageService.getStorageType(); //e.g localStorage\n  //...\n});\n```\nYou can also dynamically change storage type by passing the storage type as the last parameter for any of the API calls. For example: `localStorageService.set(key, val, \"sessionStorage\");`\n### set\nDirectly adds a value to local storage.\u003cbr/\u003e\nIf local storage is not supported, use cookies instead.\u003cbr/\u003e\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function submit(key, val) {\n   return localStorageService.set(key, val);\n  }\n  //...\n});\n```\n### get\nDirectly get a value from local storage.\u003cbr/\u003e\nIf local storage is not supported, use cookies instead.\u003cbr/\u003e\n**Returns:** `value from local storage`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function getItem(key) {\n   return localStorageService.get(key);\n  }\n  //...\n});\n```\n### keys\nReturn array of keys for local storage, ignore keys that not owned.\u003cbr/\u003e\n**Returns:** `value from local storage`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  var lsKeys = localStorageService.keys();\n  //...\n});\n```\n### remove\nRemove an item(s) from local storage by key.\u003cbr/\u003e\nIf local storage is not supported, use cookies instead.\u003cbr/\u003e\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function removeItem(key) {\n   return localStorageService.remove(key);\n  }\n  //...\n  function removeItems(key1, key2, key3) {\n   return localStorageService.remove(key1, key2, key3);\n  }\n});\n```\n### clearAll\nRemove all data for this app from local storage.\u003cbr/\u003e\nIf local storage is not supported, use cookies instead.\u003cbr/\u003e\n**Note:** Optionally takes a regular expression string and removes matching.\u003cbr/\u003e\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function clearNumbers(key) {\n   return localStorageService.clearAll(/^\\d+$/);\n  }\n  //...\n  function clearAll() {\n   return localStorageService.clearAll();\n  }\n});\n```\n### bind\nBind $scope key to localStorageService.\n**Usage:** `localStorageService.bind(scope, property, value[optional], key[optional])`\n***key:*** The corresponding key used in local storage\n**Returns:** deregistration function for this listener.\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  localStorageService.set('property', 'oldValue');\n  $scope.unbind = localStorageService.bind($scope, 'property');\n\n  //Test Changes\n  $scope.update = function(val) {\n    $scope.property = val;\n    $timeout(function() {\n      alert(\"localStorage value: \" + localStorageService.get('property'));\n    });\n  }\n  //...\n});\n```\n```html\n\u003cdiv ng-controller=\"MainCtrl\"\u003e\n  \u003cp\u003e{{property}}\u003c/p\u003e\n  \u003cinput type=\"text\" ng-model=\"lsValue\"/\u003e\n  \u003cbutton ng-click=\"update(lsValue)\"\u003eupdate\u003c/button\u003e\n  \u003cbutton ng-click=\"unbind()\"\u003eunbind\u003c/button\u003e\n\u003c/div\u003e\n```\n\n### deriveKey\nReturn the derive key\n**Returns** `String`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  localStorageService.set('property', 'oldValue');\n  //Test Result\n  console.log(localStorageService.deriveKey('property')); // ls.property\n  //...\n});\n```\n### length\nReturn localStorageService.length, ignore keys that not owned.\n**Returns** `Number`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  var lsLength = localStorageService.length(); // e.g: 7\n  //...\n});\n```\n## Cookie\nDeal with browser's cookies directly.\n## cookie.isSupported\nChecks if cookies are enabled in the browser.\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  if(localStorageService.cookie.isSupported) {\n    //...\n  }\n  //...\n});\n```\n### cookie.set\nDirectly adds a value to cookies.\u003cbr/\u003e\n**Note:** Typically used as a fallback if local storage is not supported.\u003cbr/\u003e\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function submit(key, val) {\n   return localStorageService.cookie.set(key, val);\n  }\n  //...\n});\n```\n**Cookie Expiry** Pass a third argument to specify number of days to expiry\n```js\n    localStorageService.cookie.set(key,val,10)\n```\nsets a cookie that expires in 10 days.\n**Secure Cookie** Pass a fourth argument to set the cookie as secure [W3C](https://www.w3.org/TR/csp-cookies/#grammardef-secure)\n```js\n    localStorageService.cookie.set(key,val,null,false)\n```\nsets a cookie that is secure.\n### cookie.get\nDirectly get a value from a cookie.\u003cbr/\u003e\n**Returns:** `value from local storage`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function getItem(key) {\n   return localStorageService.cookie.get(key);\n  }\n  //...\n});\n```\n### cookie.remove\nRemove directly value from a cookie.\u003cbr/\u003e\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function removeItem(key) {\n   return localStorageService.cookie.remove(key);\n  }\n  //...\n});\n```\n### cookie.clearAll\nRemove all data for this app from cookie.\u003cbr/\u003e\n**Returns:** `Boolean`\n```js\nmyApp.controller('MainCtrl', function($scope, localStorageService) {\n  //...\n  function clearAll() {\n   return localStorageService.cookie.clearAll();\n  }\n});\n```\n\nCheck out the full demo at http://gregpike.net/demos/angular-local-storage/demo.html\n\n## Development:\n* Don't forget about tests.\n* If you're planning to add some feature please create an issue before.\n\nClone the project:\n```sh\n$ git clone https://github.com/\u003cyour-repo\u003e/angular-local-storage.git\n$ npm install\n$ bower install\n```\nRun the tests:\n```sh\n$ grunt test\n```\n**Deploy:**\u003cbr/\u003e\nRun the build task, update version before(bower,package)\n```sh\n$ npm version patch|minor|major\n$ grunt dist\n$ git commit [message]\n$ git push origin master --tags\n```\n\n[npm-image]: https://img.shields.io/npm/v/angular-local-storage.svg?style=flat-square\n[npm-url]: https://npmjs.org/package/angular-local-storage\n[travis-image]: https://img.shields.io/travis/grevory/angular-local-storage.svg?style=flat-square\n[travis-url]: https://travis-ci.org/grevory/angular-local-storage\n[coveralls-image]: https://img.shields.io/coveralls/grevory/angular-local-storage.svg?style=flat-square\n[coveralls-url]: https://coveralls.io/r/grevory/angular-local-storage\n[david-image]: http://img.shields.io/david/grevory/angular-local-storage.svg?style=flat-square\n[david-url]: https://david-dm.org/grevory/angular-local-storage\n[license-image]: http://img.shields.io/npm/l/angular-local-storage.svg?style=flat-square\n[license-url]: LICENSE\n[downloads-image]: http://img.shields.io/npm/dm/angular-local-storage.svg?style=flat-square\n[downloads-url]: https://npmjs.org/package/angular-local-storage\n[gitter-image]: https://badges.gitter.im/Join%20Chat.svg\n[gitter-url]: https://gitter.im/grevory/angular-local-storage?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\n","funding_links":[],"categories":["JavaScript","awesome-web-storage [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)","Storage","AngularJS ##","Web 前端"],"sub_categories":["Different Storage APIs","Version 1.x ###"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrevory%2Fangular-local-storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrevory%2Fangular-local-storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrevory%2Fangular-local-storage/lists"}