提交 21ed9546 编写于 作者: fxy060608's avatar fxy060608

build uni-app-plus 0.0.207

上级 bd5d4c49
...@@ -358,13 +358,84 @@ function wrapper$1 (event) { ...@@ -358,13 +358,84 @@ function wrapper$1 (event) {
return event return event
} }
function processEventArgs (event, args = [], isCustom, methodName) { function getExtraValue (vm, dataPathsArray) {
let context = vm;
dataPathsArray.forEach(dataPathArray => {
const dataPath = dataPathArray[0];
const value = dataPathArray[2];
if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']
const propPath = dataPathArray[1];
const valuePath = dataPathArray[3];
const vFor = dataPath ? vm.__get_value(dataPath, context) : context;
if (Number.isInteger(vFor)) {
context = value;
} else if (!propPath) {
context = vFor[value];
} else {
if (Array.isArray(vFor)) {
context = vFor.find(vForItem => {
return vm.__get_value(propPath, vForItem) === value
});
} else if (isPlainObject(vFor)) {
context = Object.keys(vFor).find(vForKey => {
return vm.__get_value(propPath, vFor[vForKey]) === value
});
} else {
console.error('v-for 暂不支持循环数据:', vFor);
}
}
if (valuePath) {
context = vm.__get_value(valuePath, context);
}
}
});
return context
}
function processEventExtra (vm, extra) {
const extraObj = {};
if (Array.isArray(extra) && extra.length) {
/**
*[
* ['data.items', 'data.id', item.data.id],
* ['metas', 'id', meta.id]
*],
*[
* ['data.items', 'data.id', item.data.id],
* ['metas', 'id', meta.id]
*],
*'test'
*/
extra.forEach((dataPath, index) => {
if (typeof dataPath === 'string') {
if (!dataPath) { // model,prop.sync
extraObj['$' + index] = vm;
} else {
extraObj['$' + index] = vm.__get_value(dataPath);
}
} else {
extraObj['$' + index] = getExtraValue(vm, dataPath);
}
});
}
return extraObj
}
function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {
if (isCustom && !args.length) { // 无参数,直接传入 detail 数组 if (isCustom && !args.length) { // 无参数,直接传入 detail 数组
if (!Array.isArray(event.detail)) { // 应该是使用了 wxcomponent 原生组件,为了向前兼容,传递原始 event 对象 if (!Array.isArray(event.detail)) { // 应该是使用了 wxcomponent 原生组件,为了向前兼容,传递原始 event 对象
return [event] return [event]
} }
return event.detail return event.detail
} }
const extraObj = processEventExtra(vm, extra);
const ret = []; const ret = [];
args.forEach(arg => { args.forEach(arg => {
if (arg === '$event') { if (arg === '$event') {
...@@ -374,7 +445,11 @@ function processEventArgs (event, args = [], isCustom, methodName) { ...@@ -374,7 +445,11 @@ function processEventArgs (event, args = [], isCustom, methodName) {
ret.push(isCustom ? event.detail[0] : event); ret.push(isCustom ? event.detail[0] : event);
} }
} else { } else {
ret.push(arg); if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
ret.push(extraObj[arg]);
} else {
ret.push(arg);
}
} }
}); });
...@@ -407,17 +482,26 @@ function handleEvent (event) { ...@@ -407,17 +482,26 @@ function handleEvent (event) {
if (eventsArray && eventType === type) { if (eventsArray && eventType === type) {
eventsArray.forEach(eventArray => { eventsArray.forEach(eventArray => {
const methodName = eventArray[0]; const methodName = eventArray[0];
const handler = this.$vm[methodName]; if (methodName) {
if (!isFn(handler)) { const handler = this.$vm[methodName];
throw new Error(` _vm.${methodName} is not a function`) if (!isFn(handler)) {
} throw new Error(` _vm.${methodName} is not a function`)
if (isOnce) { }
if (handler.once) { if (isOnce) {
return if (handler.once) {
return
}
handler.once = true;
} }
handler.once = true; handler.apply(this.$vm, processEventArgs(
this.$vm,
event,
eventArray[1],
eventArray[2],
isCustom,
methodName
));
} }
handler.apply(this.$vm, processEventArgs(event, eventArray[1], isCustom, methodName));
}); });
} }
}); });
...@@ -480,7 +564,8 @@ function createApp (vm) { ...@@ -480,7 +564,8 @@ function createApp (vm) {
}); });
const appOptions = { const appOptions = {
onLaunch (args) { onLaunch (args) {
this.$vm = vm; this.$vm = vm;
this.$vm._isMounted = true; this.$vm._isMounted = true;
......
{ {
"name": "@dcloudio/uni-app-plus", "name": "@dcloudio/uni-app-plus",
"version": "0.0.206", "version": "0.0.207",
"description": "uni-app app-plus", "description": "uni-app app-plus",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
{ {
"name": "@dcloudio/uni-mp-weixin", "name": "@dcloudio/uni-mp-weixin",
"version": "0.0.926", "version": "0.0.927",
"description": "uni-app mp-weixin", "description": "uni-app mp-weixin",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册