提交 04f0825c 编写于 作者: Q qiang

Merge branch 'dev' of github.com:dcloudio/uni-app into dev

......@@ -245,7 +245,7 @@ function isSyncApi (name) {
}
function isCallbackApi (name) {
return CALLBACK_API_RE.test(name)
return CALLBACK_API_RE.test(name) && name !== 'onPush'
}
function handlePromise (promise) {
......@@ -1287,11 +1287,13 @@ function parseBaseComponent (vueComponentOptions, {
} = {}) {
let [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);
const componentOptions = {
options: {
const options = {
multipleSlots: true,
addGlobalClass: true
},
};
const componentOptions = {
options,
data: initData(vueOptions, Vue.prototype),
behaviors: initBehaviors(vueOptions, initBehavior),
properties: initProperties(vueOptions.props, false, vueOptions.__file),
......
......@@ -245,7 +245,7 @@ function isSyncApi (name) {
}
function isCallbackApi (name) {
return CALLBACK_API_RE.test(name)
return CALLBACK_API_RE.test(name) && name !== 'onPush'
}
function handlePromise (promise) {
......@@ -1667,7 +1667,8 @@ const customize = cached((str) => {
return camelize(str.replace(customizeRE, '-'))
});
const isComponent2 = my.canIUse('component2');
// 钉钉小程序是 component2 模式
const isComponent2 = my.dd || my.canIUse('component2');
const mocks = ['$id'];
......
......@@ -245,7 +245,7 @@ function isSyncApi (name) {
}
function isCallbackApi (name) {
return CALLBACK_API_RE.test(name)
return CALLBACK_API_RE.test(name) && name !== 'onPush'
}
function handlePromise (promise) {
......@@ -1420,11 +1420,13 @@ function parseBaseComponent (vueComponentOptions, {
} = {}) {
let [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);
const componentOptions = {
options: {
const options = {
multipleSlots: true,
addGlobalClass: true
},
};
const componentOptions = {
options,
data: initData(vueOptions, Vue.prototype),
behaviors: initBehaviors(vueOptions, initBehavior),
properties: initProperties(vueOptions.props, false, vueOptions.__file),
......@@ -1507,21 +1509,27 @@ function parseComponent (vueOptions) {
initRelation
});
// 关于百度小程序新生命周期(2.0)的说明(组件作为页面时):
// lifetimes:attached --> methods:onShow --> methods:onLoad --> methods:onReady
// 这里在新生命周期强制将onShow挪到onLoad之后触发,另外一处修改在page-parser.js
const oldAttached = componentOptions.lifetimes.attached;
componentOptions.lifetimes.attached = function attached () {
oldAttached.call(this);
if (isPage.call(this)) { // 百度 onLoad 在 attached 之前触发
// 百度 当组件作为页面时 pageinstancce 不是原来组件的 instance
this.pageinstance.$vm = this.$vm;
if (hasOwn(this.pageinstance, '_$args')) {
this.$vm.$mp.query = this.pageinstance._$args;
this.$vm.__call_hook('onLoad', this.pageinstance._$args);
this.$vm.__call_hook('onShow');
delete this.pageinstance._$args;
}
// TODO 3.105.17以下基础库内百度 Component 作为页面时,methods 中的 onShow 不触发
!newLifecycle && this.$vm.__call_hook('onShow');
} else {
// 百度小程序组件不触发methods内的onReady
if (this.$vm) {
this.$vm._isMounted = true;
this.$vm.__call_hook('mounted');
}
}
};
......@@ -1588,11 +1596,19 @@ function parsePage (vuePageOptions) {
initRelation
});
const newLifecycle = swan.canIUse('lifecycle-2-0');
// 纠正百度小程序新生命周期(2.0)methods:onShow在methods:onLoad之前触发的问题
if (newLifecycle) {
delete pageOptions.methods.onShow;
}
pageOptions.methods.onLoad = function onLoad (args) {
// 百度 onLoad 在 attached 之前触发,先存储 args, 在 attached 里边触发 onLoad
if (this.$vm) {
this.$vm.$mp.query = args;
this.$vm.__call_hook('onLoad', args);
this.$vm.__call_hook('onShow');
} else {
this.pageinstance._$args = args;
}
......
......@@ -245,7 +245,7 @@ function isSyncApi (name) {
}
function isCallbackApi (name) {
return CALLBACK_API_RE.test(name)
return CALLBACK_API_RE.test(name) && name !== 'onPush'
}
function handlePromise (promise) {
......@@ -1334,11 +1334,13 @@ function parseBaseComponent (vueComponentOptions, {
} = {}) {
let [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);
const componentOptions = {
options: {
const options = {
multipleSlots: true,
addGlobalClass: true
},
};
const componentOptions = {
options,
data: initData(vueOptions, Vue.prototype),
behaviors: initBehaviors(vueOptions, initBehavior),
properties: initProperties(vueOptions.props, false, vueOptions.__file),
......
......@@ -245,7 +245,7 @@ function isSyncApi (name) {
}
function isCallbackApi (name) {
return CALLBACK_API_RE.test(name)
return CALLBACK_API_RE.test(name) && name !== 'onPush'
}
function handlePromise (promise) {
......@@ -1511,11 +1511,13 @@ function parseBaseComponent (vueComponentOptions, {
} = {}) {
let [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);
const componentOptions = {
options: {
const options = {
multipleSlots: true,
addGlobalClass: true
},
};
const componentOptions = {
options,
data: initData(vueOptions, Vue.prototype),
behaviors: initBehaviors(vueOptions, initBehavior),
properties: initProperties(vueOptions.props, false, vueOptions.__file),
......
......@@ -245,7 +245,7 @@ function isSyncApi (name) {
}
function isCallbackApi (name) {
return CALLBACK_API_RE.test(name)
return CALLBACK_API_RE.test(name) && name !== 'onPush'
}
function handlePromise (promise) {
......@@ -1275,11 +1275,20 @@ function parseBaseComponent (vueComponentOptions, {
} = {}) {
let [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);
const componentOptions = {
options: {
const options = {
multipleSlots: true,
addGlobalClass: true
},
};
{
// 微信multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项
if (vueOptions['mp-weixin'] && vueOptions['mp-weixin']['options']) {
Object.assign(options, vueOptions['mp-weixin']['options']);
}
}
const componentOptions = {
options,
data: initData(vueOptions, Vue.prototype),
behaviors: initBehaviors(vueOptions, initBehavior),
properties: initProperties(vueOptions.props, false, vueOptions.__file),
......
......@@ -16,7 +16,8 @@ const customize = cached((str) => {
return camelize(str.replace(customizeRE, '-'))
})
export const isComponent2 = my.canIUse('component2')
// 钉钉小程序是 component2 模式
export const isComponent2 = my.dd || my.canIUse('component2')
export const mocks = ['$id']
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册