model-brighthas v0.3.1
Install
npm i brighthas/model --saveCreate 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); // 16toJSON | 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); // falseComplex 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 , 12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago