本人用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();
}
};