提交 9f4b3960 编写于 作者: Q qiang

chore: build runtime

上级 bc69d645
......@@ -900,6 +900,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......
......@@ -1636,6 +1636,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......
......@@ -1313,6 +1313,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......@@ -1883,7 +1888,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix'];
function isPage () {
// 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page
// 否则会导致mounted不执行
return typeof this.ownerId === 'undefined'
// 基础库 3.290.33 及以上 ownerId 为 null
return typeof this.ownerId === 'undefined' || this.ownerId === null
}
function initRelation (detail) {
......
......@@ -1072,6 +1072,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......
......@@ -1233,6 +1233,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......
......@@ -1325,6 +1325,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......@@ -2121,34 +2126,50 @@ function parseBaseComponent (vueComponentOptions, {
return [componentOptions, VueComponent]
}
const components = [];
function parseComponent (vueOptions) {
const [componentOptions, VueComponent] = parseBaseComponent(vueOptions);
// 基础库 2.0 以上 attached 顺序错乱,按照 created 顺序强制纠正
componentOptions.lifetimes.created = function created () {
components.push(this);
};
componentOptions.lifetimes.attached = function attached () {
const properties = this.properties;
this.__lifetimes_attached = function () {
const properties = this.properties;
const options = {
mpType: isPage.call(this) ? 'page' : 'component',
mpInstance: this,
propsData: properties
};
const options = {
mpType: isPage.call(this) ? 'page' : 'component',
mpInstance: this,
propsData: properties
};
initVueIds(properties.vueId, this);
initVueIds(properties.vueId, this);
// 初始化 vue 实例
this.$vm = new VueComponent(options);
// 初始化 vue 实例
this.$vm = new VueComponent(options);
// 处理$slots,$scopedSlots(暂不支持动态变化$slots)
initSlots(this.$vm, properties.vueSlots);
// 处理$slots,$scopedSlots(暂不支持动态变化$slots)
initSlots(this.$vm, properties.vueSlots);
// 处理父子关系
initRelation.call(this, {
vuePid: this._$vuePid,
mpInstance: this
});
// 处理父子关系
initRelation.call(this, {
vuePid: this._$vuePid,
mpInstance: this
});
// 触发首次 setData
this.$vm.$mount();
// 触发首次 setData
this.$vm.$mount();
};
let component = this;
while (component && component.__lifetimes_attached && components[0] && component === components[0]) {
components.shift();
component.__lifetimes_attached();
delete component.__lifetimes_attached;
component = components[0];
}
};
// ready 比 handleLink 还早,初始化逻辑放到 handleLink 中
......
......@@ -969,6 +969,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......
......@@ -1039,6 +1039,11 @@ function initProperties (props, isBehavior = false, file = '') {
type: Object,
value: null
};
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots
type: null,
value: [],
......@@ -1477,7 +1482,8 @@ const mocks = ['nodeId', 'componentName', '_componentId', 'uniquePrefix'];
function isPage () {
// 百度小程序组件的id,某些情况下可能是number类型的0,不能直接return !this.ownerId 判断当前组件是否是Page
// 否则会导致mounted不执行
return typeof this.ownerId === 'undefined'
// 基础库 3.290.33 及以上 ownerId 为 null
return typeof this.ownerId === 'undefined' || this.ownerId === null
}
function findVmByVueId (vm, vuePid) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册