深入理解Vue生命周期、手动挂载及挂载子组件


Posted in Javascript onSeptember 27, 2017

本文介绍了Vue生命周期和手动挂载,分享给大家,具体如下:

1、vue的生命周期:

深入理解Vue生命周期、手动挂载及挂载子组件

2、$mount()手动挂载

当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中;

假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载。

例如:

方法一:

<div id="app"> 
 {{name}} 
</div> 
<button onclick="test()">挂载</button> 
<script> 
 var obj= {name: '张三'} 
 var vm = new Vue({ 
  data: obj
 }) 
 function test() { 
  vm.$mount("#app"); 
 }

方法二:

Vue.extend()用以创建没有挂载的的子类,可以使用该子累创建多个实例

var app= Vue.extend({ 
 template: '<p>{{firstName}} {{lastName}}</p>', 
   data: function () { 
    return { 
    firstName: 'Walter', 
    lastName: 'White' 
    } 
    } 
   }) 
 // 创建 app实例,并挂载到一个元素上。 
 new app().$mount('#app')

下面我们使用自动插入label

手动挂载插件:https://vuefe.cn/api/#Vue-extend

动手写代码

1、先移除user-name.vue 里显示错误的label,因为我们要手动插入

<label class="label label-danger">用户不合法</label>

2、先看一下我们插件validate.js的全部代码,然后我们再分析

export default{
  install(Vue){

    Vue.prototype.checkUserName = (value) => {
      if(value == ""){
        return true; // 如果没有填写,默认为true
      }

      if(/\w{6,20}/.test(value)){
        return true;
      }else{
        return false;
      }
    }

    Vue.prototype.errorLabel = null;
    Vue.prototype.hasError = false;

    Vue.directive("uname",{
      bind(){
        let errorTpl = Vue.extend({
          template:'<label class="label label-danger">用户不合法</label>'
        });
        // 实例化并挂载
        Vue.errorLabel = (new errorTpl()).$mount().$el;
      },
      update(el,binding,vnode){
        if(/\w{6,20}/.test(el.value)){
          // 验证通过
          if (Vue.hasError){
            el.parentNode.removeChild(Vue.errorLabel);
            Vue.hasError = !Vue.hasError;
          }
        }else{
          // 验证没有通过
          if (!Vue.hasError){
            el.parentNode.appendChild(Vue.errorLabel);
            Vue.hasError = ! Vue.hasError;
          }

        }
      },
    })
  }
}

3、定义了2个prototype

Vue.prototype.errorLabel = null;
Vue.prototype.hasError = false;

errorLabel错误提示模板,我们在要bind() 方法中创建,然后挂载到它上面;hasError 是辅助属性,方便我们用来判断当前是有错误还是没有错误。

4、在update() 方法中,实时监听用户的输入,然后移除/添加 错误模板

update(el,binding,vnode){
   if(/\w{6,20}/.test(el.value)){
     // 验证通过
     if (Vue.hasError){
       el.parentNode.removeChild(Vue.errorLabel);
       Vue.hasError = !Vue.hasError;
     }
   }else{
     // 验证没有通过
     if (!Vue.hasError){
       el.parentNode.appendChild(Vue.errorLabel);
       Vue.hasError = ! Vue.hasError;
     }
   }
 },

5、演示效果如下图

深入理解Vue生命周期、手动挂载及挂载子组件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
写的htc的数据表格
Jan 20 Javascript
使用onbeforeunload属性后的副作用
Mar 08 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
May 03 Javascript
基于jquery实现省市联动特效
Dec 17 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
Jan 03 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
javascript实现前端分页功能
Nov 26 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 #Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 #Javascript
vue-cli项目中怎么使用mock数据
Sep 27 #Javascript
javaScript实现复选框全选反选事件详解
Nov 20 #Javascript
javaScript实现滚动条事件详解
Mar 24 #Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
Sep 27 #Javascript
深入掌握 react的 setState的工作机制
Sep 27 #Javascript
You might like
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
php7 新增功能实例总结
2020/05/25 PHP
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
PHP守护进程实例
2015/03/06 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python requests证书问题解决
2019/09/05 Python
python 实现多维数组转向量
2019/11/30 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
大学生毕业自荐信
2013/10/10 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
精神文明建设标语
2014/06/16 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
2015入党个人自传范文
2015/06/26 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python