ember-storage
v2.0.0
Published
Store data in localStorage or sessionStorage and synchronize it between tabs.
Downloads
2,136
Maintainers
Readme
Ember Storage
A simple but powerful way for managing data that you wish to last through a page reload. This add-on synchronizes data between browser tabs when using localStorage and it is observable.
Installation
ember install:addon ember-storage
Usage
This service is injected into all routes and components as storage
. You
may get, set, and observe data on storage
just like a regular Ember Object:
export default Ember.Component.extend({
fullWidth: function() {
return !this.get('storage.sideBarOpen');
}.property('storage.sideBarOpen'),
actions: {
toggleMenu: function() {
this.toggleProperty('storage.sideBarOpen');
},
},
});
<!-- some component template -->
<div id="sidebar" class="{{if storage.sideBarOpen 'open' ''}}">
sidebar contents
</div>
<button {{action 'toggleMenu'}}>Toggle Sidebar</button>
API
prefix
(property). Set a key prefix. Handy for saving user specific device config. Defaults to 'es'.type
(property). Either 'session' or 'local'. Defaults to 'local'. Due to the waysessionStorage
works tab sync does not work if type is set to 'session'.clear
(function). Clear all data for the specified key. Defaults to the key currently set inprefix
.
Examples:
// application route
export default Ember.Route.extend({
afterModel: function(model) {
this.currentUserID = model.id;
// now multiple users could use this device without sharing data
this.storage.set('prefix', this.currentUserID);
},
actions: {
resetUserPreferences: function() {
this.storage.clear(this.currentUserID);
},
},
});
To create an additional instance (maybe one for sessionStorage) add an initializer to your app:
// app/initializers/session-service.js
import Session from '../services/storage';
var session = Session.create({
type: 'session',
});
export function initialize(container, application) {
container.register('service:session', session, {instantiate: false});
application.inject('route', 'session', 'service:session');
application.inject('component', 'session', 'service:session');
}
export default {
name: 'session-service',
initialize: initialize
};
Running Tests
ember test
ember test --server
For more information on using ember-cli, visit http://www.ember-cli.com/.