摘要:NUI組件是公司新一代的前端開發框架,它精致優雅的前端編程模型,是大家能夠,或者想接受學習它的重要原因,在使用它的時候,一定不免會想增加自己的控件,讓別人也能夠如此優雅的使用。 其實NUI的擴展機制不是很復雜,下面說說如何擴展一個新的NUI控件
NUI組件是公司新一代的前端開發框架,它精致優雅的前端編程模型,是大家能夠,或者想接受學習它的重要原因,在使用它的時候,一定不免會想增加自己的控件,讓別人也能夠如此優雅的使用。
其實NUI的擴展機制不是很復雜,下面說說如何擴展一個新的NUI控件,一共分為以下兩步:
定義一個新的js文件,比如叫XxxControlImpl.js,js文件內容如下:
//定義XxxControl的構造方法
nui.XxxControl= function () {
nui.XxxControl.superclass.constructor.call(this);
};
//定義XxxControl的繼承控件及其主體
nui.extend(
nui.XxxControl,
nui.XxxControlSuper, //要繼承的父控件
//控件主體
{
uiCls: "nui-xxx", //注意:這個屬性必須設置,否則調用nui.parse()方法不會正確解析此控件
yyy : "", //新屬性
setYyy: function(value){
this.yyy = value;
},
getYyy: function(){
return this.yyy;
},
//屬性解析賦值
getAttrs: function (el) {
var attrs = nui.XxxControl.superclass.getAttrs.call(this, el);
var jq = jQuery(el);
nui._ParseString(el, attrs,
["yyy"]
);
return attrs;
},
//初始化此控件調用的方法
_create: function () {
nui.XxxControl.superclass._create.call(this);
。。。。。。
},
//初始化事件調用的方法
_initInputEvents: function () {
nui.XxxControl.superclass._initInputEvents.call(this);
this.on("buttonclick", this.__ZzzClick, this);
。。。。。。
}
});
//把定義XxxControl控件注冊到NUI體系中
nui.regClass(nui.XxxControl, 'xxx');
使用,比如一個test.html中的內容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>選擇資源</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script src="common/nui/nui.js" type="text/javascript"></script>
<script src="XxxControlImpl.js" type="text/javascript"></script>
</head>
<body>
<input id="test" class="nui-xxx"/>
<script type="text/javascript">
nui.parse();
</script>
</body>
</html> 通過上面兩步,是不是很簡單的就可以擴展出一個新的控件?
