GithubHelp home page GithubHelp logo

model's Introduction

model

NPM version Dependency Status Build Status Coverage Status

ES5 minimalistic extensible model component.

By using Object.defineProperty, change event is automaticaly emited on value set. this feature can make it works with reactive.

You may need polyfill code for ie < 9

Install

npm i model-component

API

Model(name)

Factory method, Create a new model with the given name.

var Model = require('model')
var User = Model('User')

Model.attr(name, [meta])

Define an attribute name with optional meta data object (used by plugins).

Model.method(name, fn)

Add function with name to model prototype

.changed([attr])

Return false or an object

containing the "dirty" attributes. Optionally check for a specific attr.

.clean()

Set current attrs as original attrs

.set(attrs)

Set multiple attrs.

.has(attr)

Check if attr is present (not null or undefined).

.use(plugin)

Plugin is called with Model class

Events

  • change event emitted on model instance.
user.on('change name', function(val, prev) {
  api.updateUser({name: val, id: user.id}, function(err) {
  })
})
  • change $stat event emitted on model stat change
user.on('change $stat', function(isDirty) {
  if (isDirty) {
  // it's dirty
  } else {
  // it become clean
  }
})

Add methods to model

User.method('destroy', function() {
  var self = this
  api.removeUser(this.primary(), function(err) {
    if (err) { return; }
    //remove bindings
    self.off()
  })
})

Testing

using webpack-dev-server

$ npm install webpack webpack-dev-server -g
$ npm install
$ make test

License

MIT

model's People

Contributors

tj avatar chemzqm avatar ianstormtaylor avatar nw avatar matthewmueller avatar ericgj avatar rauchg avatar forbeslindesay avatar wejendorp avatar juliangruber avatar luka5 avatar pgherveou avatar debbbbie avatar

Watchers

 avatar James Cloos avatar  avatar

Forkers

halcwb

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.