ejq是一款非常小巧的JS工具库,未压缩才50K,在jquery的基础上对jquery缺失部分作了很好的弥补作用。
优点:
1、具有内置的模板解析引擎语法和angularjs相近减少学习成本
2、能够方便的对JSON操作,增删查改
3、随机数功能比较健全
4、丰富的通用函数,这些函数是通过N多项目需求并且积累下来的,实用性很强。
功能介绍
一、随机数
var num= $.random.getNum(10);//获取0-10之间的随机数字 var num2 = $.random.getNumBetween(100,200);//获取100-200之间的随机数字 var num3 = $.random.getNumBetweenLength(4, 5);//获取长度为4-5的随机数字 var num4 = $.random.getNumByLength(10); //获取长度为10的随机数 var w1 = $.random.getWord(10);//获取10位长度的随机(字母加数字) var w2 = $.random.getNumBetweenLength(2, 4);//获取2位长度到4位长度之间的随机(字母加数字) var guid = $.random.getGuid();//获取guid
二、对JSON的操作
var json = [{ id: 1, name: "张三" }, { id: 2, name: "李四" }, { id: 3, name: "王五" }]; //对json进行筛选获取1和2的json集合 var json1And2 = $.linq.where(json, function (v) { return v.id == 1 || v.id == 2; }); //获取id为1的对象 var zs = $.linq.single(json, function (v) { return v.id == 1; }); //获取id>1的第一个对象 var list = $.linq.first(json, function (v) { return v.id > 1; }); //排序 var json2 = $.linq.order(json, "id", "desc"); //移除id为1的对象 $.linq.remove(json, function (v) { v.id == 1; }); //是否存在ID为1的对象,因为让删了当然反回false var isAnyOne = $.linq.any(json, function (v) { v.id == 1 });
三、数据的双向绑定
第一眼看去像是angularjs,其实是ejq.js模仿angularjs自已实现的模版解析引擎,因为这个功能才写了2天,有很多功能还没来的急实现,会最在近一个月让它更加的健全。
现在已经实现了 异步和同步的数据绑定功能 ,暂不支持运算符和逻辑条件,只作数据绑定还是够用了。
$(function () { //申明模版引擎的作用域 var model = $ejqApp.module("ng-app"); //控制器操作 model.controller("ctr1", function ($scope, $http, $con, $app, $tool, $event) { $scope.model = { title: "哈哈", list: [{ id: 1, name: "table1" }, { id: 2, name: "table2" }, { id: 3, name: "table3" }], item: [{ id: 3, name: "table3" }, { id: 2, name: "table2" }, { id: 1, name: "table1" }], id: 1 }; $scope.haha = { text: "haha " }; //使用ajax $http.jsonList = { url:"../json.json",//随机URL type: "get", }; //获取当前控制器 var thObj = $con.getObj(); //获取当前App var appObj = $app.getObj(); //给当前控制器name注册事件实现双向绑定 appObj.on("click", thObj.find("#name"), function () { //更新model.Title $scope.model.title ="哈哈"+ $.random.getNumBetweenLength(8, 10); //更换AJAX URL if ($http.jsonList.url == "../json.json") { $http.jsonList.url = "../jsonList.json"; } else { $http.jsonList.url = "../json.json"; } //重新绑定 $ejqApp.apps.bind() alert("数据重新绑定成功") }) }) $ejqApp.apps.bind(); })
<body ng-app="ng-app"> <h1> 模仿angular.js双向绑定的DEMO </h1> <div ng-controller="ctr1"> <input id="name" type="button" value="Reset" /> <div> <h1>$scope.model</h1> {{model.title}} {{model.id}} <table ng-repeat="item in model.list"> <tr><td>{{item.id}}</td><td>{{item.name}}</td></tr> </table> <table ng-repeat="item in model.item"> <tr><td>{{item.id}}</td><td>{{item.name}}</td></tr> </table> </div> <h1>$scope.haha</h1> {{haha.text}} <h3>异步加载</h3> <table ng-repeat="item in jsonList"> <tr><td>{{item.desc}}</td><td>{{item.name}}</td></tr> </table> </div> </body>