Skip to content

margox/badmodel.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

badmodel.js

自用的一个Model模块,极限阉割版的backbone ⊙﹏⊙‖∣° ##特性

  • 支持链式操作
  • 支持nested属性访问(data.a.b.c)
  • 使用set方法设置属性时,会触发属性对应的change回调函数.
  • 可以使用本模块来绑定任何事件到任意合法字符串标志符上

##范例

var Model = badModel,
    data  = {"name":"Jack","age":"25","sex":"male"};

// 依据data来初始化模块,同时指定name属性改变时候的回调
Model.init(data).on("change", "name", function (name) {
    console.log("New name is " + name);
});

// 更改name为Tom
Model.set("name", "Tom");
// 输出"New name is Tom"

// 批量绑定回调
Model.on({
    "change:age" : function (age) {console.log("Age changed to " + age);},
    "change:sex" : function (sex) {console.log("Sex changed to " + sex);}
});

// 设置新的属性
Model.set("father", "Margox").set("mother", "Undefined");

// 批量设置新的属性
Model.set({
    "brother" : "null",
    "sister"  : "null"
});

Model.set({
    "children" : {
        "child1" : "Jim",
        "child2" : "Rose",
        "child3" : "Pual"
    }
});
Model.on("change", "children", function () {
    console.log("children has been changed");
}).on("change", "children.child1", function (child1) {
    console.log("children.child1 changed to " + child1);
});

// nested方式属性访问
Model.set("children.child1", "Lucy");
// 输出 "children has been changed"
// 输出 "children.child1 changed to Lucy" 

console.log(Model.get("children.child1"));
// 输出"Lucy"

console.log(Model.jsonData());
// 输出{"name":"Tom","age":"25","sex":"male","brother":"null","sister":"null","children":{"child1":"Lucy","child2":"Rose","child3":"Pual"}};

// toggle方法
Model.set("status","aaa").toggle("status");
console.log(Model.get("status"));
//输出false

Model.toggle("status");
console.log(Model.get("status"));
//输出true

// push方法,用于将一个元素追加到数组类型的数据里面
Model.set("data_array",["a","b","c"]).push("data_array","d");
console.log(Model.get("data_array"));
// 输出["a","b","c","d"]

// 绑定事件回调到任意标志符的任意事件
Model.on("hungry", "baby", function (food) {
    console.log("baby feeded with " + food);
});

// 触发事件
Model.trigger("hungry", "baby", "milk");
// 输出"baby feeded with milk"

About

一个简单的Model处理模块

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published