propertygrid在其屬性面板中載入json物件帶函式的屬性或者事件
阿新 • • 發佈:2019-02-18
如何在propertygrid的url載入json物件帶函式的屬性或者事件?
由於propertygrid的url載入json物件時,會將裡面的屬性或者事件所對應的函式解析成字串,所以這需要處理該函式字串為函式或者事件集合。
程式碼如下:
xxx.json:
{"name":"<span title='method'>請求方式</span>","proname":"method","value":"post","group":"easyui屬性", "editor":{"type":"combobox", "options":{"data":[{"value":"post","text":"post"},{"value":"get","text":"get"}], "valueField":"value","textField":"text", "keyHandler":"{up: function(){},down: function(){},enter: function(){var falg='method';comboboxClass.getInput(this,falg);},query: function(q){}}" }}},
xxx.js:
//載入屬性面板 $('#component_pg').propertygrid({ url: "components/"+$(this).attr("component_id")+".json", scrollbarSize: 0, showGroup:true, groupFormatter:function(group,rows){ if(group=="easyui屬性"){ for(var i=0;i<rows.length;i++){ if(rows[i].editor.type&&rows[i].editor.type=="combobox"){ if(rows[i].editor.options.keyHandler){ var test=rows[i].editor.options.keyHandler; var json = eval('(' + test + ')'); rows[i].editor.options.keyHandler=json; /*var f2=(new Function("return "+test))(); rows[i].editor.options.keyHandler=f2;*/
}
}
}
return "easyui屬性";
}
else if(group=="html屬性"){
return "html屬性";
}
else if(group=="樣式屬性"){
return "樣式屬性";
}
}
});
最後執行圖:var comboboxClass = (function(){ return { getInput:function(obj,falg){ var q=$("span[title='"+falg+"']").parent().parent().next().children().find('input.textbox-text').val(); if(q!=''){ var datas = $(obj).combobox('options').data; var addcloum={text:q,value:q}; datas.push(addcloum); $(obj).combobox('loadData',datas); $(obj).combobox('setValue',q); } } }; }());