Skip to content

Instantly share code, notes, and snippets.

@GCheung55
Created April 24, 2012 07:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save GCheung55/2477648 to your computer and use it in GitHub Desktop.
Save GCheung55/2477648 to your computer and use it in GitHub Desktop.
Neuro readme

Neuro

A MooTools client-side MVC.

Influences:

Dependencies:

Focus:

  • uncoupled coding but allow for a coupled organization if necessary
  • provide base for applications

Usage

Model

Subclass Model with MooTools Class.

var HumanModel = new Class({
    Extends: Neuro.Model
    // Set the default data
    _data: {
        firstName: ''
        ,lastName: ''
        ,hp: 10
        ,max: 100
        ,lvl: 1
        // You can set a function as a custom getter. "this" will be _data, not the model itself.
        ,name: function(){
            return this.firstName + ' ' + this.lastName;
        }
    }
});

Create a model instance

var bruceLee = new HumanModel({
    firstName: 'Bruce'
    ,lastName: 'Lee'
    ,hp: 1000
    ,lvl: 99
});

bruceLee.get('name'); // 'Bruce Lee'
bruceLee.get('lvl'); // 99
bruceLee.set('lvl', 100).get('lvl'); // 100

Collection

Subclass Collection with MooTools Class.

var Humans = new Class({
    Extends: Neuro.Collection

    ,Model: HumanModel
});

Add data to the collection

// Add one dataset to the collection
Humans.add({
    firstName: 'Chuck'
    ,lastName: 'Norris'
    ,hp: 1000
});

// Add multiple datasets to the collection
Humans.add({
    firstName: 'Kareem Abdul'
    ,lastName: 'Jabbar'
    ,hp: 1000
    ,lvl: 80
}, {
    firstName: 'Gary'
    ,lastName: 'Elms'
    ,hp: 800
    ,lvl: 81
});

// Add a model instance
Humans.add(bruceLee);

Get a model from the collection by index

Humans.get(4); // bruceLee model

Remove a model from the collection

var garyElms = Humans.get(3); // Gary Elms model
Humans.remove(garyElms);

// Check if the removed model still exists in the collection
Humans.hasModel(garyElms); // false

ToDo

  • Add a Router mechanism
  • Add a Sync mechanism
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment