An Angular service for creating classes with inheritance. Exposes the Class
service.
The Class service.
Defines a new Class.
The contructor method
Other class methods
The instance.
The current method on the first ancestor which has this method.
Any class method or property.
The functionality of the Class
service is best explained by some examples.
//Creates the 'MyModels' module, which requires the 'Class' module
angular.module('MyModels', ['Class'])
//The Animal ModelClass, uses the 'Class' service
.factory('Animal', function(Class){
return function(){
var Animal = Class.extend({
init: function(){
this.isAlive = true;
this.age = 0;
this.color = null;
},
canWalk: function(){
return this.isAlive;
},
canFly: function(){
return this.isAlive;
},
passYear: function(){
this.age++;
}
});
return Animal;
}
})
//The Hamster ModelClass, uses the 'Animal' ModelClass service
.factory('Hamster', function(Animal){
var Hamster = Animal.extend({
init: function(){
this._super();
this.color = 'brown';
},
canFly: function(){
return false;
},
passYear: function(){
this._super();
if(this.age > 2){
this.isAlive = false;
}
}
});
return Hamster;
});
// A controller, which uses both the ModelClasses
myApp.controller('MyController', function(Animal, Hamster){
var tweety = new Animal();
tweety.passYear();
tweety.passYear();
tweety.passYear();
//tweety instanceof Class === true
//tweety instanceof Animal === true
//tweety.canFly() === true
//tweety.isAlive === true
var knaagie = new Hamster();
knaagie.passYear();
knaagie.passYear();
//knaagie.isAlive === true
knaagie.passYear();
//knaagie.isAlive === false
//knaagie instanceof Class === true
//knaagie instanceof Animal === true
//knaagie instanceof Hamster === true
//knaagie.canFly() === false
});
bower install angular-class --save
ornpm install angular-class --save
- Include reference to
angular-class.min.js
- Add the
Class
module as dependency.
- Get the source code.
npm install
bower install
gulp test
- Original author: John Resig. See the original blog post.
- This Angular wrapper package: Mark Lagendijk