From 5c951eee9ef2b2d57bc6f08b10d21347d01ec538 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Wed, 16 Dec 2020 19:23:47 +0800 Subject: [PATCH] 优化 Pilot 基类 --- bases/Pilot.js | 24 +++++++++++++++++++++--- 1 files changed, 21 insertions(+), 3 deletions(-) diff --git a/bases/Pilot.js b/bases/Pilot.js index a8fc753..c92522b 100644 --- a/bases/Pilot.js +++ b/bases/Pilot.js @@ -12,16 +12,34 @@ return {}; } - createOptions() { + createOptions(dataAdd) { const options = { methods: {}, }; - Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => { + const names = []; + // 实例本身的字段 + Object.getOwnPropertyNames(this).forEach(name => names.push(name)); + // 类的字段 + Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => names.push(name)); + // 传递 + names.forEach(name => { + // 构造器忽略,如果存在属性 $methods 也忽略 if (name === 'constructor' || name === '$methods') { return; } if (/^\$/.test(name)) { - options[name.replace('$', '')] = this[name]; + if (name === '$data' && typeof dataAdd !== 'undefined') { + // 当有传data值进来,初始值必须带data中的字段 + const dataOrig = this.$data(); + options.data = () => { + return { + ...dataOrig, + ...dataAdd, + } + } + } else { + options[name.replace('$', '')] = this[name]; + } } else { options.methods[name] = this[name]; } -- Gitblit v1.9.1