1、mini.parse()
描述:将html标签解析为miniui控件。解析后,才能使用mini.get获取到控件对象
a、只有带有miniui的className的元素才会被解析
b、动态添加带miniui的className的元素需要经过mini.parse()解析。
2、mini.layout()
描述:布局调整控件达到合适尺寸。
看看实现方法:
mini.layout = function(_, $) { if (!mini.enableLayout) return; if (!document.body) return; function A(C) { if (!C) return; var E = mini.get(C); if (E) { if (E['doLayout']) if (!mini._Layouts[E.uid]) { mini._Layouts[E.uid] = E; if ($ !== false || E['isFixedSize']() == false) E['doLayout'](false); delete mini._Layouts[E.uid] } } else { var _ = C.childNodes; if (_) for (var D = 0, G = _.length; D < G; D++) { var F = _[D]; try { F.toString() } catch(B) { continue } A(F) } } } if (!_) _ = document.body; A(_); if (_ == document.body) mini.layoutIFrames() };
就是遍历body的每个元素,看看是不是mini控件,如果是的话就尝试调用控件的dolayout属性对应的方法以实现布局。
具体效果不清楚是什么样,先不管这一条。
3、mini.get(id)
描述:根据id获取控件对象
实现方法:
get: function(_) { if (!_) return null; if (mini.isControl(_)) return _; if (typeof _ == "string") if (_.charAt(0) == "#") _ = _.substr(1); if (typeof _ == "string") return mini.components[_]; else { var $ = mini.uids[_.uid]; if ($ && $.el == _) return $ } return null },
当我们传入id时,带不带#都行,然后会从mini.components中根据id取出对应的mini控件对象。为什么从这个里面取呢?当我们创建mini控件对象时,会在基类O010l0中调用mini.reg()方法,如下所示:
O010l0:
O010l0 = function() { this.o1o11l = {}; this.uid = mini.newId(this.lo11); this._id = this.uid; if (!this.id) this.id = this.uid; mini.reg(this) };
mini.reg:传入的$参数为我们创建的mini控件对象
reg: function($) { this.components[$.id] = $; this.uids[$.uid] = $ },
这样就可以知道为什么我们可以根据id从mini.components,根据uid从mini.uids(mini.getByUid(uid))中获取。
4、mini.getByUid(uid)
描述:根据uid获取控件对象
实现方法:
getbyUID: function($) { return mini.uids[$] },
5、mini.getByName(name)
mini.getByName(name, parent)
描述:根据name获取单个控件
参数描述:
name:控件Name
parent:限定获取控件的范围
实现方法:
getsbyName: function(B, C) { var D = mini.isControl(C),//判断parent是否为mini控件 $ = C; if (C && D) C = C.el;//如果parent为mini控件的话,就获取el属性 C = l1O1(C);//这个方法当只有1个参数时,接受两种情况:1、string 类型的 id值,返回对应元素;2、非string类型,返回参数本身 C = C || document.body;//当C不为空时,C=C;否则C=document.body
//在mini.uids利用第一个参数方法寻找,将查找结果返回 var _ = mini.findControls(function($) { if (!$.el) return false; if ($.name == B && O1O0(C, $.el)) return true; return false }, this);
//如果上述情况没找到,调用控件对象的getbyName方法再找一遍,如果有的话。可以解决动态添加未调用mini.parse()的情况? if (D && _.length == 0 && $ && $['getbyName']) {
var A = $['getbyName'](B); if (A) _.push(A) } return _ }, getbyName: function($, _) { return mini.getsbyName($, _)[0] }, getByName: function($, _) { return mini['getbyName']($, _) },
主要的是getsbyName这个方法。过程写在代码上了。现在看一下parent我们可以传递写什么?1、mini控件对象;2、元素id值。
注意点:
a、如果传递可以根据name获取到parent
b、只能获取mini控件元素,因为是从uids里面去遍历的。
6、mini.getsByName(name)
mini.getsbyName(name, parent)
描述:根据name获取多个控件
实现方法:
getsByName: function($, _) { return mini.getsbyName($, _) },
参考5.
7、mini.formatNumber(number, format)
描述:格式化数字。
format取值,参考:
-
- 小数点和千分位:format="n"
- 货币格式:format="c"。
- 百分比格式:format="p"。
- 自定义格式:format="¥#,0.00"
处理还挺多的。下次再编辑吧。