okam-core
Version:
The extension for small program framework
57 lines (51 loc) • 1.38 kB
JavaScript
/**
* @file Component triggerEvent helper
* @author sparklewhy@gmail.com
*/
;
/**
* Normalize event arguments to fix the native swan framework bug
*
* @param {Component} component current component instance
* @param {Object} args the event args to normalize
* @return {Object}
*/
export function normalizeEventArgs(component, args) {
let eventData = args[1] || {};
if (eventData.currentTarget && eventData.target) {
return args;
}
let propData = component.props;
let dataset = {};
propData && Object.keys(propData).forEach(k => {
if (/^data\-.+$/.test(k)) {
let first = true;
let dataKey = k.replace(
/\-(\w)/g,
(match, char) => {
if (first) {
first = false;
return char.toLowerCase();
}
return char.toUpperCase();
}
);
dataKey = dataKey.substr('data'.length);
dataset[dataKey] = propData[k];
}
});
let eventObj = {
type: args[0],
currentTarget: {
dataset,
id: component.id
},
target: {
dataset,
id: component.id
},
detail: eventData
};
args[1] = eventObj;
return args;
}