Coder Social home page Coder Social logo

ampersand-registry's Introduction

ampersand-registry

Global model registry for tracking instantiated models accross collections.

This isn't necessary for most apps, but sometimes it's useful to create a global registry of all or a subset of instantiated models in your application. This can be useful when realtime applications where you're getting incoming events with IDs and model types and need some global way to look up models in your application.

The code is quite short and simple it's only ~50 lines. It may be easiest to just read the code for documetation. But some examples/explanations are included below.

Part of the Ampersand.js toolkit for building clientside applications.

install

npm install ampersand-registry

browser support

testling badge

example

var Registry = require('ampersand-registry');
var Model = require('ampersand-model');

// a singleton model registry
window.registry = new Registry();

// then whenever we're defining models for our application
// if we're using ampersand-model or it's lower level cousin
// ampersand-state we can pass it the registry as part of the
// definition.

var MyModel = Model.extend({
    type: 'user',
    props: {
        name: 'string'
    },
    // Pass the registry you want all the instances of this model
    // to be included in.
    registry: window.registry

    // can also be a function in case it's not defined yet
    registry: function () {
        return window.registry;
    } 
});

After doing this all instantiated models will be put into the registry based on their type property and be removed when destroyed.

Then the registry can be used to look up models as follows:

// explicitly storing a model
// (if you declare them in your models this isn't necessary) 
// this will use the models `type`, `getId`, and `namespace` 
// properties to store this accordingly.
registry.store(model);

// get a model
registry.lookup('{{model type}}', '{{ model id }}', '{{ optional namespace }}');

// remove a stored model from the store by type, id and optionally namespace
registry.remove('{{model type}}', '{{ model id }}', '{{ optional namespace }}');

// de-reference all models
registry.clear();

credits

If you like this follow @HenrikJoreteg on twitter.

license

MIT

ampersand-registry's People

Contributors

henrikjoreteg avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.