Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
anyefeiyu
uni-app
提交
2557eedb
U
uni-app
项目概览
anyefeiyu
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2557eedb
编写于
4月 01, 2019
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(runtime): app-plus add $getAppWebview
上级
485715f1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
75 addition
and
42 deletion
+75
-42
packages/uni-app-plus/dist/index.js
packages/uni-app-plus/dist/index.js
+69
-42
src/core/runtime/wrapper/create-page.js
src/core/runtime/wrapper/create-page.js
+6
-0
未找到文件。
packages/uni-app-plus/dist/index.js
浏览文件 @
2557eedb
...
...
@@ -252,14 +252,10 @@ function initMocks (vm) {
});
}
function
initHooks
(
mpOptions
,
hooks
,
delay
=
false
)
{
function
initHooks
(
mpOptions
,
hooks
)
{
hooks
.
forEach
(
hook
=>
{
mpOptions
[
hook
]
=
function
(
args
)
{
if
(
delay
)
{
setTimeout
(()
=>
this
.
$vm
.
__call_hook
(
hook
,
args
));
}
else
{
this
.
$vm
.
__call_hook
(
hook
,
args
);
}
return
this
.
$vm
.
__call_hook
(
hook
,
args
)
};
});
}
...
...
@@ -362,14 +358,21 @@ function wrapper$1 (event) {
return
event
}
function
processEventArgs
(
event
,
args
=
[],
isCustom
)
{
function
processEventArgs
(
event
,
args
=
[],
isCustom
,
methodName
)
{
if
(
isCustom
&&
!
args
.
length
)
{
// 无参数,直接传入 detail 数组
if
(
!
Array
.
isArray
(
event
.
detail
))
{
// 应该是使用了 wxcomponent 原生组件,为了向前兼容,传递原始 event 对象
return
[
event
]
}
return
event
.
detail
}
const
ret
=
[];
args
.
forEach
(
arg
=>
{
if
(
arg
===
'
$event
'
)
{
ret
.
push
(
isCustom
?
event
.
detail
[
0
]
:
event
);
if
(
methodName
===
'
__set_model
'
&&
!
isCustom
)
{
// input v-model value
ret
.
push
(
event
.
target
.
value
);
}
else
{
ret
.
push
(
isCustom
?
event
.
detail
[
0
]
:
event
);
}
}
else
{
ret
.
push
(
arg
);
}
...
...
@@ -403,9 +406,10 @@ function handleEvent (event) {
if
(
eventsArray
&&
eventType
===
type
)
{
eventsArray
.
forEach
(
eventArray
=>
{
const
handler
=
this
.
$vm
[
eventArray
[
0
]];
const
methodName
=
eventArray
[
0
];
const
handler
=
this
.
$vm
[
methodName
];
if
(
!
isFn
(
handler
))
{
throw
new
Error
(
` _vm.
${
eventArray
[
0
]
}
is not a function`
)
throw
new
Error
(
` _vm.
${
methodName
}
is not a function`
)
}
if
(
isOnce
)
{
if
(
handler
.
once
)
{
...
...
@@ -413,7 +417,7 @@ function handleEvent (event) {
}
handler
.
once
=
true
;
}
handler
.
apply
(
this
.
$vm
,
processEventArgs
(
event
,
eventArray
[
1
],
isCustom
));
handler
.
apply
(
this
.
$vm
,
processEventArgs
(
event
,
eventArray
[
1
],
isCustom
,
methodName
));
});
}
});
...
...
@@ -449,8 +453,7 @@ const hooks = [
'
onPageNotFound
'
];
function
createApp
(
vueOptions
)
{
vueOptions
=
vueOptions
.
default
||
vueOptions
;
function
createApp
(
vm
)
{
// 外部初始化时 Vue 还未初始化,放到 createApp 内部初始化 mixin
Vue
.
mixin
({
beforeCreate
()
{
...
...
@@ -478,21 +481,20 @@ function createApp (vueOptions) {
const
appOptions
=
{
onLaunch
(
args
)
{
this
.
$vm
=
new
Vue
(
Object
.
assign
(
vueOptions
,
{
mpType
:
'
app
'
,
mpInstance
:
this
}));
this
.
$vm
=
vm
;
this
.
$vm
.
$mount
();
setTimeout
(()
=>
this
.
$vm
.
__call_hook
(
'
onLaunch
'
,
args
));
this
.
$vm
.
_isMounted
=
true
;
this
.
$vm
.
__call_hook
(
'
mounted
'
);
this
.
$vm
.
__call_hook
(
'
onLaunch
'
,
args
);
}
};
initHooks
(
appOptions
,
hooks
,
true
);
// 延迟执行,因为 App 的注册在 main.js 之前,可能导致生命周期内 Vue 原型上开发者注册的属性无法访问
initHooks
(
appOptions
,
hooks
);
// 延迟执行,因为 App 的注册在 main.js 之前,可能导致生命周期内 Vue 原型上开发者注册的属性无法访问
App
(
appOptions
);
return
v
ueOptions
return
v
m
}
function
triggerLink
(
mpInstance
,
vueOptions
)
{
...
...
@@ -535,37 +537,62 @@ const hooks$1 = [
function
createPage
(
vueOptions
)
{
vueOptions
=
vueOptions
.
default
||
vueOptions
;
let
VueComponent
;
if
(
isFn
(
vueOptions
))
{
VueComponent
=
vueOptions
;
vueOptions
=
VueComponent
.
extendOptions
;
}
else
{
VueComponent
=
Vue
.
extend
(
vueOptions
);
}
const
pageOptions
=
{
options
:
{
multipleSlots
:
true
,
addGlobalClass
:
true
},
data
:
getData
(
vueOptions
,
Vue
.
prototype
),
onLoad
(
args
)
{
lifetimes
:
{
// 当页面作为组件时
attached
()
{
this
.
$vm
=
new
Vue
(
Object
.
assign
(
vueOptions
,
{
mpType
:
'
page
'
,
mpInstance
:
this
})
);
this
.
$vm
=
new
VueComponent
(
{
mpType
:
'
page
'
,
mpInstance
:
this
}
);
this
.
$vm
.
__call_hook
(
'
created
'
);
this
.
$vm
.
__call_hook
(
'
onLoad
'
,
args
);
// 开发者可能会在 onLoad 时赋值,提前到 mount 之前
this
.
$vm
.
$mount
();
},
onReady
()
{
this
.
$vm
.
_isMounted
=
true
;
this
.
$vm
.
__call_hook
(
'
mounted
'
);
this
.
$vm
.
__call_hook
(
'
onReady
'
);
},
onUnload
()
{
this
.
$vm
.
__call_hook
(
'
onUnload
'
);
{
this
.
$vm
.
__call_hook
(
'
created
'
);
this
.
$vm
.
$mount
();
},
ready
()
{
this
.
$vm
.
__call_hook
(
'
beforeMount
'
);
this
.
$vm
.
_isMounted
=
true
;
this
.
$vm
.
__call_hook
(
'
mounted
'
);
this
.
$vm
.
__call_hook
(
'
onReady
'
);
},
detached
()
{
this
.
$vm
.
$destroy
();
}
},
__e
:
handleEvent
,
__l
:
handleLink
methods
:
{
// 作为页面时
onLoad
(
args
)
{
this
.
$vm
.
$mp
.
query
=
args
;
// 又要兼容 mpvue
this
.
$vm
.
__call_hook
(
'
onLoad
'
,
args
);
// 开发者可能会在 onLoad 时赋值,提前到 mount 之前
},
onUnload
()
{
this
.
$vm
.
__call_hook
(
'
onUnload
'
);
},
__e
:
handleEvent
,
__l
:
handleLink
}
};
initHooks
(
pageOptions
,
hooks$1
);
initHooks
(
pageOptions
.
methods
,
hooks$1
);
{
pageOptions
.
methods
.
$getAppWebview
=
function
()
{
return
plus
.
webview
.
getWebviewById
(
`
${
this
.
__wxWebviewId__
}
`
)
};
}
return
Page
(
pageOptions
)
return
Component
(
pageOptions
)
}
function
initVueComponent
(
mpInstace
,
VueComponent
,
extraOptions
=
{})
{
...
...
src/core/runtime/wrapper/create-page.js
浏览文件 @
2557eedb
...
...
@@ -87,6 +87,12 @@ export function createPage (vueOptions) {
}
initHooks
(
pageOptions
.
methods
,
hooks
)
if
(
__PLATFORM__
===
'
app-plus
'
)
{
pageOptions
.
methods
.
$getAppWebview
=
function
()
{
return
plus
.
webview
.
getWebviewById
(
`
${
this
.
__wxWebviewId__
}
`
)
}
}
return
Component
(
pageOptions
)
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录