diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index 14cb17c998d6cfd5bc966f1e5cbe620bc1ca24b5..6f17dd70f82db5e3686e661137e960c735260e30 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -9119,17 +9119,24 @@ var serviceContext = (function () { }; } + function wrapperEvent (event) { + event.preventDefault = noop; + event.stopPropagation = noop; + event.mp = event; + return Object.assign({ + mp: event // mpvue + }, event) + } + const handleVdData = { [UI_EVENT]: function onUIEvent (vdBatchEvent, vd) { vdBatchEvent.forEach(([cid, nid, event]) => { nid = String(nid); - event.preventDefault = noop; - event.stopPropagation = noop; const target = vd.elements.find(target => target.cid === cid && target.nid === nid); if (!target) { return console.error(`event handler[${cid}][${nid}] not found`) } - target.dispatchEvent(event.type, event); + target.dispatchEvent(event.type, wrapperEvent(event)); }); } }; @@ -9234,15 +9241,53 @@ var serviceContext = (function () { data[k] = v; } - function diffObject (newObj, oldObj) { + function diffObject (newObj, oldObj, every = true) { + let result, key, cur, old; + for (key in newObj) { + cur = newObj[key]; + old = oldObj[key]; + if (old !== cur) { + if (!every) { + return newObj + } + setResult(result || (result = Object.create(null)), key, cur); + } + } + return result + } + + function diffArray (newArr, oldArr) { + const newLen = newArr.length; + if (newLen !== oldArr.length) { + return newArr + } + if (isPlainObject(newArr[0])) { + for (let i = 0; i < newLen; i++) { + if (diffObject(newArr[i], oldArr[i], false)) { + return newArr + } + } + } else { + for (let i = 0; i < newLen; i++) { + if (newArr[i] !== oldArr[i]) { + return newArr + } + } + } + } + + function diffElmData (newObj, oldObj) { let result, key, cur, old; for (key in newObj) { cur = newObj[key]; old = oldObj[key]; if (old !== cur) { - if (key === 's' && isPlainObject(cur) && isPlainObject(old)) { + if (key === B_STYLE && isPlainObject(cur) && isPlainObject(old)) { const style = diffObject(cur, old); - style && setResult(result || (result = Object.create(null)), 's', style); + style && setResult(result || (result = Object.create(null)), B_STYLE, style); + } else if (key === V_FOR && Array.isArray(cur) && Array.isArray(old)) { + const vFor = diffArray(cur, old); + vFor && setResult(result || (result = Object.create(null)), V_FOR, vFor); } else { setResult(result || (result = Object.create(null)), key, cur); } @@ -9260,7 +9305,7 @@ var serviceContext = (function () { setResult(result, id, cur); continue } - const idObj = diffObject(cur, old); + const idObj = diffElmData(cur, old); idObj && setResult(result, id, idObj); } return result diff --git a/packages/uni-app-plus/dist/view.umd.js b/packages/uni-app-plus/dist/view.umd.js index 46bd00007cf632b7124680a49f0f4db7db481877..54fe3290c76d28404bb8f2c867fbb9bc4985839b 100644 --- a/packages/uni-app-plus/dist/view.umd.js +++ b/packages/uni-app-plus/dist/view.umd.js @@ -581,7 +581,7 @@ var request_component_observer = __webpack_require__(49); destroyComponentObserver: request_component_observer["a" /* destroyComponentObserver */] }); // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/scroll.js -var subscribe_scroll = __webpack_require__(13); +var subscribe_scroll = __webpack_require__(12); // EXTERNAL MODULE: ./src/platforms/app-plus/view/bridge/subscribe/index.js var bridge_subscribe = __webpack_require__(56); @@ -598,7 +598,7 @@ function initSubscribe(subscribe) { Object(bridge_subscribe["a" /* default */])(subscribe); } // EXTERNAL MODULE: ./src/platforms/app-plus/view/bridge.js -var bridge = __webpack_require__(12); +var bridge = __webpack_require__(11); // CONCATENATED MODULE: ./src/core/view/bridge/index.js /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "on", function() { return on; }); @@ -9448,118 +9448,6 @@ function getWindowOffset() { /* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { -"use strict"; -/* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return vd; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return initData; }); -/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); -/* harmony import */ var _vdom_sync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59); -/* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43); -/* harmony import */ var _page_factory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42); -var _handleData; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - - - - - - - -var vd; -var PageVueComponent; -var handleData = (_handleData = {}, _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* PAGE_CREATE */ "c"], function onPageCreate(data) { - var _data = _slicedToArray(data, 3), - pageId = _data[0], - pagePath = _data[1], - pageOptions = _data[2]; - - document.title = "".concat(pagePath, "[").concat(pageId, "]"); // 设置当前页面伪对象,方便其他地方使用 getCurrentPages 获取当前页面 id,route - - Object(_page__WEBPACK_IMPORTED_MODULE_4__[/* setCurrentPage */ "b"])(pageId, pagePath); // 初始化当前页面 VueComponent(生成页面样式代码) - - PageVueComponent = Object(_page_factory__WEBPACK_IMPORTED_MODULE_5__[/* getPageVueComponent */ "b"])(pagePath); // 生成当前页面 vd - - vd = new _vdom_sync__WEBPACK_IMPORTED_MODULE_3__[/* VDomSync */ "a"](pageId); // 通知页面创建,根据当前页面配置信息,初始化部分事件 - - UniViewJSBridge.subscribeHandler(_constants__WEBPACK_IMPORTED_MODULE_2__[/* ON_PAGE_CREATE */ "a"], pageOptions, pageId); -}), _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* MOUNTED_DATA */ "b"], function onMounted(data) { - vd.addVData.apply(vd, data); -}), _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* UPDATED_DATA */ "f"], function onUpdated(data) { - vd.updateVData.apply(vd, data); -}), _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* PAGE_CREATED */ "d"], function onPageCreated(data) { - var _data2 = _slicedToArray(data, 2), - pageId = _data2[0], - pagePath = _data2[1]; - - new PageVueComponent({ - mpType: 'page', - pageId: pageId, - pagePath: pagePath - }).$mount('#app'); -}), _handleData); - -function vdSync(_ref) { - var data = _ref.data, - options = _ref.options; - var isVdCallback = true; - data.forEach(function (data) { - if (data[0] === _constants__WEBPACK_IMPORTED_MODULE_1__[/* PAGE_CREATE */ "c"]) { - // 页面创建无需触发 callback - isVdCallback = false; - } - - handleData[data[0]](data[1]); - }); - vd.flush(); - isVdCallback && vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].nextTick(function () { - UniViewJSBridge.publishHandler(_constants__WEBPACK_IMPORTED_MODULE_1__[/* VD_SYNC_CALLBACK */ "h"]); - }); -} - -function getData(id, name) { - try { - return this.$r[id][name]; - } catch (e) { - console.error(this.$options.__file + ":[".concat(this._$id, "]$r[").concat(id, "][").concat(name, "] is undefined")); - } -} - -function initData(Vue) { - Vue.prototype._$g = getData; - UniViewJSBridge.subscribe(_constants__WEBPACK_IMPORTED_MODULE_1__[/* VD_SYNC */ "g"], vdSync); - Object.defineProperty(Vue.prototype, '_$vd', { - get: function get() { - return !this.$options.isReserved && vd; - } - }); - Vue.mixin({ - beforeCreate: function beforeCreate() { - if (this.$options.mpType) { - this.mpType = this.$options.mpType; - } - - if (this._$vd) { - this._$vd.initVm(this); - } - } - }); -} -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) - -/***/ }), -/* 11 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - "use strict"; // EXTERNAL MODULE: ./src/shared/index.js + 4 modules @@ -9811,7 +9699,7 @@ function initEvents() { } /***/ }), -/* 12 */ +/* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -9852,14 +9740,14 @@ function publishHandler(event) { } /***/ }), -/* 13 */ +/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return disableScroll; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return pageScrollTo; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createScrollListener; }); -/* harmony import */ var uni_platform_view_bridge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12); +/* harmony import */ var uni_platform_view_bridge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11); function disableScroll(evt) { evt.preventDefault(); @@ -9982,6 +9870,118 @@ function createScrollListener(pageId, _ref2) { } /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) +/***/ }), +/* 13 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return vd; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return initData; }); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); +/* harmony import */ var _vdom_sync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59); +/* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43); +/* harmony import */ var _page_factory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42); +var _handleData; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + + + + + + +var vd; +var PageVueComponent; +var handleData = (_handleData = {}, _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* PAGE_CREATE */ "c"], function onPageCreate(data) { + var _data = _slicedToArray(data, 3), + pageId = _data[0], + pagePath = _data[1], + pageOptions = _data[2]; + + document.title = "".concat(pagePath, "[").concat(pageId, "]"); // 设置当前页面伪对象,方便其他地方使用 getCurrentPages 获取当前页面 id,route + + Object(_page__WEBPACK_IMPORTED_MODULE_4__[/* setCurrentPage */ "b"])(pageId, pagePath); // 初始化当前页面 VueComponent(生成页面样式代码) + + PageVueComponent = Object(_page_factory__WEBPACK_IMPORTED_MODULE_5__[/* getPageVueComponent */ "b"])(pagePath); // 生成当前页面 vd + + vd = new _vdom_sync__WEBPACK_IMPORTED_MODULE_3__[/* VDomSync */ "a"](pageId); // 通知页面创建,根据当前页面配置信息,初始化部分事件 + + UniViewJSBridge.subscribeHandler(_constants__WEBPACK_IMPORTED_MODULE_2__[/* ON_PAGE_CREATE */ "a"], pageOptions, pageId); +}), _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* MOUNTED_DATA */ "b"], function onMounted(data) { + vd.addVData.apply(vd, data); +}), _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* UPDATED_DATA */ "f"], function onUpdated(data) { + vd.updateVData.apply(vd, data); +}), _defineProperty(_handleData, _constants__WEBPACK_IMPORTED_MODULE_1__[/* PAGE_CREATED */ "d"], function onPageCreated(data) { + var _data2 = _slicedToArray(data, 2), + pageId = _data2[0], + pagePath = _data2[1]; + + new PageVueComponent({ + mpType: 'page', + pageId: pageId, + pagePath: pagePath + }).$mount('#app'); +}), _handleData); + +function vdSync(_ref) { + var data = _ref.data, + options = _ref.options; + var isVdCallback = true; + data.forEach(function (data) { + if (data[0] === _constants__WEBPACK_IMPORTED_MODULE_1__[/* PAGE_CREATE */ "c"]) { + // 页面创建无需触发 callback + isVdCallback = false; + } + + handleData[data[0]](data[1]); + }); + vd.flush(); + isVdCallback && vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].nextTick(function () { + UniViewJSBridge.publishHandler(_constants__WEBPACK_IMPORTED_MODULE_1__[/* VD_SYNC_CALLBACK */ "h"]); + }); +} + +function getData(id, name) { + try { + return this.$r[id][name]; + } catch (e) { + console.error(this.$options.__file + ":[".concat(this._$id, "]$r[").concat(id, "][").concat(name, "] is undefined")); + } +} + +function initData(Vue) { + Vue.prototype._$g = getData; + UniViewJSBridge.subscribe(_constants__WEBPACK_IMPORTED_MODULE_1__[/* VD_SYNC */ "g"], vdSync); + Object.defineProperty(Vue.prototype, '_$vd', { + get: function get() { + return !this.$options.isReserved && vd; + } + }); + Vue.mixin({ + beforeCreate: function beforeCreate() { + if (this.$options.mpType) { + this.mpType = this.$options.mpType; + } + + if (this._$vd) { + this._$vd.initVm(this); + } + } + }); +} +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) + /***/ }), /* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -12625,7 +12625,7 @@ function requestComponentInfo(_ref, pageId) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return initSubscribe; }); /* harmony import */ var uni_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); -/* harmony import */ var uni_core_view_bridge_subscribe_scroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13); +/* harmony import */ var uni_core_view_bridge_subscribe_scroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3); @@ -12673,7 +12673,7 @@ function initSubscribe(subscribe) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony import */ var uni_helpers_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7); -/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11); +/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); /* harmony import */ var _behaviors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); /* harmony import */ var _wxs_component_descriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58); @@ -13127,7 +13127,7 @@ function initVue(Vue) { var plugins = __webpack_require__(57); // EXTERNAL MODULE: ./src/platforms/app-plus/view/framework/plugins/data.js -var data = __webpack_require__(10); +var data = __webpack_require__(13); // CONCATENATED MODULE: ./src/platforms/app-plus/view/framework/plugins/event.js @@ -13149,12 +13149,11 @@ function initEvent(Vue) { }; Vue.prototype.$handleViewEvent = function ($vueEvent, options) { - var isCustomEvent = $vueEvent._processed; // 自定义事件已提前处理过 - + // const isCustomEvent = $vueEvent._processed // 自定义事件已提前处理过 var $event = this.$handleEvent($vueEvent); var cid = this._$id; // 当自定义组件根节点触发事件时,nid 始终为 0 - var nid = isCustomEvent || $vueEvent.currentTarget === this.$el ? 0 : $event.options.nid; + var nid = $vueEvent.currentTarget === this.$el ? 0 : $event.options.nid; if (typeof nid === 'undefined') { return console.error("[".concat(cid, "] nid not found")); @@ -17955,7 +17954,7 @@ function getRealPath(filePath) { return filePath; } // EXTERNAL MODULE: ./src/core/view/plugins/events.js + 1 modules -var events = __webpack_require__(11); +var events = __webpack_require__(10); // CONCATENATED MODULE: ./src/core/view/mixins/base.js diff --git a/src/platforms/app-plus/service/framework/plugins/diff.js b/src/platforms/app-plus/service/framework/plugins/diff.js index 9e02fcf8ca543938434ab3470c86032f242d9011..152315927d7388824714d907c9797f24d0cd53ca 100644 --- a/src/platforms/app-plus/service/framework/plugins/diff.js +++ b/src/platforms/app-plus/service/framework/plugins/diff.js @@ -2,19 +2,62 @@ import { isPlainObject } from 'uni-shared' +import { + V_FOR, + B_STYLE +} from '../../constants' + function setResult (data, k, v) { data[k] = v } -function diffObject (newObj, oldObj) { +function diffObject (newObj, oldObj, every = true) { + let result, key, cur, old + for (key in newObj) { + cur = newObj[key] + old = oldObj[key] + if (old !== cur) { + if (!every) { + return newObj + } + setResult(result || (result = Object.create(null)), key, cur) + } + } + return result +} + +function diffArray (newArr, oldArr) { + const newLen = newArr.length + if (newLen !== oldArr.length) { + return newArr + } + if (isPlainObject(newArr[0])) { + for (let i = 0; i < newLen; i++) { + if (diffObject(newArr[i], oldArr[i], false)) { + return newArr + } + } + } else { + for (let i = 0; i < newLen; i++) { + if (newArr[i] !== oldArr[i]) { + return newArr + } + } + } +} + +function diffElmData (newObj, oldObj) { let result, key, cur, old for (key in newObj) { cur = newObj[key] old = oldObj[key] if (old !== cur) { - if (key === 's' && isPlainObject(cur) && isPlainObject(old)) { + if (key === B_STYLE && isPlainObject(cur) && isPlainObject(old)) { const style = diffObject(cur, old) - style && setResult(result || (result = Object.create(null)), 's', style) + style && setResult(result || (result = Object.create(null)), B_STYLE, style) + } else if (key === V_FOR && Array.isArray(cur) && Array.isArray(old)) { + const vFor = diffArray(cur, old) + vFor && setResult(result || (result = Object.create(null)), V_FOR, vFor) } else { setResult(result || (result = Object.create(null)), key, cur) } @@ -32,7 +75,7 @@ export function diff (newData, oldData, result) { setResult(result, id, cur) continue } - const idObj = diffObject(cur, old) + const idObj = diffElmData(cur, old) idObj && setResult(result, id, idObj) } return result diff --git a/src/platforms/app-plus/service/framework/plugins/vdom-sync.js b/src/platforms/app-plus/service/framework/plugins/vdom-sync.js index a0b34d15947e82c9bfe67777fdc9199d14186392..880d7cb38ccb7604463ad76142ec266709f292a8 100644 --- a/src/platforms/app-plus/service/framework/plugins/vdom-sync.js +++ b/src/platforms/app-plus/service/framework/plugins/vdom-sync.js @@ -18,17 +18,24 @@ import { vdSyncCallbacks } from '../subscribe-handlers/on-vd-sync-callback' +function wrapperEvent (event) { + event.preventDefault = noop + event.stopPropagation = noop + event.mp = event + return Object.assign({ + mp: event // mpvue + }, event) +} + const handleVdData = { [UI_EVENT]: function onUIEvent (vdBatchEvent, vd) { vdBatchEvent.forEach(([cid, nid, event]) => { nid = String(nid) - event.preventDefault = noop - event.stopPropagation = noop const target = vd.elements.find(target => target.cid === cid && target.nid === nid) if (!target) { return console.error(`event handler[${cid}][${nid}] not found`) } - target.dispatchEvent(event.type, event) + target.dispatchEvent(event.type, wrapperEvent(event)) }) } } diff --git a/src/platforms/app-plus/view/framework/plugins/event.js b/src/platforms/app-plus/view/framework/plugins/event.js index 7b39443abc7d5ea3f741dbd2e937e2a0201e2a0b..40240fdf2bfd36fc760b80ba6efda44750e74a82 100644 --- a/src/platforms/app-plus/view/framework/plugins/event.js +++ b/src/platforms/app-plus/view/framework/plugins/event.js @@ -20,11 +20,11 @@ export function initEvent (Vue) { } Vue.prototype.$handleViewEvent = function ($vueEvent, options) { - const isCustomEvent = $vueEvent._processed // 自定义事件已提前处理过 + // const isCustomEvent = $vueEvent._processed // 自定义事件已提前处理过 const $event = this.$handleEvent($vueEvent) const cid = this._$id // 当自定义组件根节点触发事件时,nid 始终为 0 - const nid = isCustomEvent || ($vueEvent.currentTarget === this.$el) ? 0 : $event.options.nid + const nid = $vueEvent.currentTarget === this.$el ? 0 : $event.options.nid if (typeof nid === 'undefined') { return console.error(`[${cid}] nid not found`) }