vue 常用组件工程化,简化组件的调用

一、运用window全局、$emit、$on组件化

main.js

window.$channel = $channel;
Vue.prototype.NavBarConfig = (config) => {
  $channel.$emit('NavTransitionEvent', config)
}

在其他页面直接可以thisNavBarConfig({}), 比如:

this.NavBarConfig({
      title: "差旅费事前申请单",
      back: this.goNativeApp,
      hide: false,
      menu: {
        // icon: 'iconfont icon-fenxiang',
        text: {
          value: "下一步",
          class: "",
          style: {}
        },
        handle: () => {
          this.nextClick();
        }
      }
    });

解析

1、this.NavBarConfigthis指向VueVue.prototype.NavBarConfig;
调用 $channel.$emit('NavTransitionEvent', config)
2、$channel定义为window.$channel,因此所有页面都能调用$channel

header.vue

// 其他元素省略
created: function() {
    $channel.$on('NavTransitionEvent', (config) => {
      this.reset();
      if (!config) {
        return;
      }
      this.config.isText = config.menu && config.menu.text ? true : false;
      Object.assign(this.config, config);
      if (this.config.hide) {
        this.$emit('on-hide', true) // header关闭,传值父组件将其关闭
      } else {
        this.$emit('on-hide', false)
      }
    })
  },

解析
1、第一次created header组件未显示,等this.NavBarConfig()调用时,才再次启动调用

二、用Vue.extend构建消息提示组件

// 假设toast.vue已写好
// index.js
import Vue from 'vue';
import OriginToast from '../toast/toast.vue';

const Toast = Vue.extend(OriginToast);

let instance,
    active = false;
export default {
    show(message = ' ') {
        if(active) return;
        /* global document:true */
        if(!instance) {
            instance = new Toast({
                el: document.createElement('div'),
            });
            document.body.appendChild(instance.$el);
        }
        active = true;
        instance.message = message;
        instance.type = 'loading';
        instance.position = 'center';
        Vue.nextTick(() => {
            instance.show();
        });
    },
    hide() {
        instance.hide();
        active = false;
    },
    toggle(message) {
        return active ? this.hide() : this.show(message);
    },
};
window.$loading = loading;

// 其他页面调用
loading.toggle(‘正在加载...’);

材料: 用Vue.extend构建消息提示组件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 序 今年大前端的概念一而再再而三的被提及,那么大前端时代究竟是什么呢?大前端这个词最早是因为在阿里内部有很多前端开...
    一缕殇流化隐半边冰霜阅读 11,235评论 19 92
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,050评论 0 29
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 9,612评论 1 52
  • 昨天三八节,车间女工活动去看电影,生化危机,第五部终结篇。前四部我都没有看过,这第五部,英语3D,中文字幕,我居然...
    萝卜英阅读 227评论 6 3
  • 上一周都特别忙,加班回去基本很难得动笔,一直觉得画画这个东西一定要有一个好的心态,不是为了完成而去完成。。 所以,...
    贰佳阅读 282评论 1 2