model-brighthas

0.3.1 • Public • Published

Install

npm i brighthas/model --save

Create Model

var createModel = require("model");
var User = createModel("User",
    "name",
    "age",
    history,{type:"array"});

Config Model

User
 .attr("name")
 .attr("age")
 .attr("history",{type:"array"});

Add method

 
User.method("getUserInfo",function(){
 
    return "Name : " + this.name + "\n Age : " + this.age;
 
});
 
 

create Model object

var user = new User({ name:"leo" , age:20 , history: [] });
 
user.begin(); // begin update
user.name = "brighthas";
user.age = 30;
user.end(); // end update  , then may emit 'changed' event. 
 

update model

 
user.begin(); // begin update
user.name = "brighthas";
user.age = 30;
user.end(); // end update  , then may emit 'changed' event. 
 
console.log(this.hasError());  // true / false
console.log(this.errors);  //  [] is no error .
 

or

user.begin();
user.set({name:"leo",age:25});
user.end(); // end update  , then may emit 'changed' event. 
console.log(this.hasError());  // true / false
console.log(this.errors);  //  [] is no error .

or no use begin() & end()

 
user.name = 222 ;
console.log(this.hasError());  // true 
 
// if have error , then can't change other value.
user.age = 16 ;  
console.log(user.age) ; // no 16.
 
// so first clear errors.
user.errors = [];
user.age = 16; 
console.log(user.age); // 16
 

toJSON | reborn

var jsonObj = user.toJSON();

var user2 = User.reborn(jsonObj); console.log(user.name === user2.name); // true

user2.name = "brighthas"; console.log(user.name === user2.name); // false

Type

if no assign type , default type="string" .

Two types : value type and complex type.

Value type

string | array | json | boolean | number | date | regexp

when get value , the value is clone .

var T = createModel("T",ts:{type:"json"});
 
var t = T();
 
t.userInfo = {name:"leo"};
 
var u1 = t.userInfo;
var u2 = t.userInfo;
 
console.log(u1 === u2); // false
 

Complex type

complex type can be Model or object including Type.prototype.toJSON & Type.reborn function & emit changed event.

when get value , the value is original value.

 
var User = createModel("User",
    "name",
    "age",
    history,{type:"array"});
 
 
var T = createModel("T",user:{type:User}); // User is Model.
 
var t = T();
 
t.user = User({name:"leo",age:21});
 
var u1 = t.user; // the value is original value.
var u2 = t.user; // the value is original value.
 
console.log(u1 === u2); // true , 
 

or

 
function User(name,age,hisitory){
    this.name = name;
    this.age = age;
    this.history = hisitory || [];
}
 
User.prototype.toJSON = function(){
    return {
        name:this.name,
        age:this.age,
        history:this.history
    }
}
 
User.reborn = function(jsonObj){
    return new User(jsonObj.name,jsonObj.age,jsonObj.history);
}
 
 
//////////////////////////////////////////
 
 
var T = createModel("T",user:{type:User});
 
var t = T();
 
t.user = User("leo",21);
 
var u1 = t.user; // the value is original value.
var u2 = t.user; // the value is original value.
 
console.log(u1 === u2); // true , 
 

Readme

Keywords

Package Sidebar

Install

npm i model-brighthas

Weekly Downloads

1

Version

0.3.1

License

MIT

Last publish

Collaborators

  • brighthas