設計器UI界面有了,接下來結點的屬性怎麼顯示呢,採用彈窗的話以爲不方便用戶;用easyui的propertygrid在最右邊顯示,又以爲要引入easyui,使得插件變複雜了;最後決定本身寫。html
一、實現效果以下:微信
1.一、屬性顯示閉包
1.二、屬性隱藏ui
1.三、屬性分組收起this
二、jQuery - 左右拖動分隔條(Demo)spa
三、流程闆闆屬性定義及初始化prototype
//定義流程模板屬性 TemplateProperty = function () { if (typeof TemplateProperty.defaults == "undefined") { /*第一次定義對象時爲GoFlow類定義靜態屬性*/ TemplateProperty.defaults = { data: { } }; /*第一次定義對象時定義實例共有方法*/ var p = TemplateProperty.prototype; p.createTable = function () { //給控件賦值 this.bindData(); //綁定事件 this.bindDelegate(); }; //把流程模板數據綁定到控件 p.bindData = function () { var self = this; $.each(self.$opts.data, function (k, v) { self.setValue(k, v); }); }; //綁定事件 p.bindDelegate = function () { //展開/收縮屬性組 this.$tbody.delegate("td[group].Fold,td[group].Expanded", "click", { self: this }, function (e) { var $templateProp = e.data.self; var fold = $(e.target).hasClass("Fold"); $(e.target).toggleClass("Fold", !fold); $(e.target).toggleClass("Expanded", fold); var selector = GoFlow.formatString( "[group='{0}'][property]", $(e.target).attr("group")); $templateProp.$tbody.children(selector).toggle(); }); //input綁定onchange事件 this.$tbody.delegate("td > input", "change", { self: this }, function (e) { var $templateProp = e.data.self; var key = $(e.target).parent().parent().attr("property"); var value = $(e.target).val(); $templateProp.setData(key, value); }); //input綁定onkeydown事件 this.$tbody.delegate("td > input.goflow-valid-int", "keydown", function (e) { return GoFlow.validInt(e); }); }; p.getData = function (key) { return this.$opts.data[key]; }; p.setData = function (key, value) { this.$opts.data[key] = value; }; p.getValue = function (key) { switch (key) { }; }; p.setValue = function (key, value) { switch (key) { }; }; } }; //初始化TemplateProperty對象 TemplateProperty.prototype.init = function (pdiv, opts) { this.$propertyDiv = pdiv; this.$opts = opts; this.createTable(); };
四、加入流程模板屬性後goflow插件最新結構以下插件
(function ($, undefined) { //定義流程模板屬性 TemplateProperty = function () { }; //初始化TemplateProperty對象 TemplateProperty.prototype.init = function (pdiv, opts) { }; //定義GoFlow類 GoFlow = function () { }; //初始化GoFlow對象(gfDiv:jQuery對象;opts:參數) GoFlow.prototype.init = function (gfDiv, opts) { }; //插件的定義 $.fn.goflow = function (opts) { }; })(jQuery); //閉包結束
五、代碼:GoFlow_02.zip設計
演示地址:Demo3d
微信演示公衆號: