本人用fabricjs开发了如下功能:
现在遇到的问题是:
当选中画布里的元素时,右边表单所有输入框的onChange事件都执行了一遍。
添加一个状态变量isLoading
选中画布元素
canvas.on("selection:created", function(){ console.log("selection:created"); var object = canvas.getActiveObject(); showSettingData(object); });
开始加载表单
function showSettingData(object){ isLoading = true; var type = object.get("type"); //... loadFormData(type, object); }
表单加载完成
function loadFormData(type, eleObject){ var formData = makeFormData(type, eleObject); var arrNumericField = ['width', 'height', 'top', 'left']; $.each(formData, function(fieldName, value){ if(-1 !== arrNumericField.indexOf(fieldName)){ formData[fieldName] = parseInt(value); } }); $("#form_" + type).form('load',formData); isLoading = false; }
onChange事件添加条件
var configTextInput = { onChange: function(newVal, oldVal){ if(!isLoading){ reRenderCanvas(); } };