Vue2.0 【第四季】第2节 实例方法

目录

  • Vue2.0 【第四季】第2节 实例方法

    • 第2节 实例方法

      • 一、$mount方法
      • 二、$destroy()卸载方法
      • 三、$forceUpdate()更新方法
      • 四、$nextTick()数据修改方法

Vue2.0 【第四季】第2节 实例方法


第2节 实例方法

一、$mount方法

$mount方法是用来挂载我们的扩展的,我们先来复习一下扩展的写法。

这里我们作了da0sy的扩展,然后用$mount的方法把da0sy挂载到DOM上,我们也生成了一个Vue的实例,直接看代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../assets/js/vue.js"></script>
    <title>Examples Method Demo</title>
</head>
<body>
    <h1>Examples Method Demo</h1>
    <hr>
    <div id="app">
        {{message}}
    </div>

    <script type="text/javascript">
      var da0sy = Vue.extend({
          template:`<p>{{message}}</p>`,
          data:function(){
              return {
                  message:'Hello ,I am da0sy'
              }
          }
      })
      var vm = new da0sy().$mount("#app")
    </script>
</body>
</html>

浏览器效果:

二、$destroy()卸载方法

用$destroy()进行卸载。

我写了一个button按钮,点击后卸载整个挂载。

html:

<p><button onclick="destroy()">卸载</button></p>

js:

function destroy(){
   vm.$destroy();
}

全部代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../assets/js/vue.js"></script>
    <title>Examples Method Demo</title>
</head>
<body>
    <h1>Examples Method Demo</h1>
    <hr>
    <div id="app">
        {{message}}
    </div>
    <p><button onclick="destroy()">卸载</button></p>

    <script type="text/javascript">
      var da0sy = Vue.extend({
          template:`<p>{{message}}</p>`,
          data:function(){
              return {
                  message:'Hello ,I am da0sy'
              }
          },
          mounted:function(){
            console.log("mounted 被创建!");
          },
          destroyed:function(){
              console.log("destroy 销毁之后");
          }
      })
      var vm = new da0sy().$mount("#app");

      function destroy(){
          vm.$destroy();
      }
    </script>
</body>
</html>

浏览器效果:

PS:$destroy()后边必须要有括号,没有括号是无用的。

三、$forceUpdate()更新方法

vm.$forceUpdate();

全部代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../assets/js/vue.js"></script>
    <title>Examples Method Demo</title>
</head>
<body>
    <h1>Examples Method Demo</h1>
    <hr>
    <div id="app">
        {{message}}
    </div>
    <p><button onclick="destroy()">卸载</button></p>
    <p><button onclick="reload()">刷新</button></p>

    <script type="text/javascript">
      var da0sy = Vue.extend({
          template:`<p>{{message}}</p>`,
          data:function(){
              return {
                  message:'Hello ,I am da0sy'
              }
          },
          mounted:function(){
            console.log("mounted 被创建!");
          },
          destroyed:function(){
              console.log("destroy 销毁之后");
          }
      })
      var vm = new da0sy().$mount("#app");

      function destroy(){
          vm.$destroy();
      }
      function reload(){
          vm.$forceUpdate();
      }
    </script>
</body>
</html>

浏览器效果:

四、$nextTick()数据修改方法

当Vue构造器里的data值被修改完成后会调用这个方法,相当于一个钩子函数,和构造器里的updated生命周期很像。

function tick(){
    vm.message="update message info ";
    vm.$nextTick(function(){
        console.log('message更新完后我被调用了');
    })
}

同样的:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../assets/js/vue.js"></script>
    <title>Examples Method Demo</title>
</head>
<body>
    <h1>Examples Method Demo</h1>
    <hr>
    <div id="app">
        {{message}}
    </div>
    <p><button onclick="destroy()">卸载</button></p>
    <p><button onclick="reload()">刷新</button></p>
    <p><button onclick="tick()">更改数据</button></p>

    <script type="text/javascript">
      var da0sy = Vue.extend({
          template:`<p>{{message}}</p>`,
          data:function(){
              return {
                  message:'Hello ,I am da0sy'
              }
          },
          mounted:function(){
            console.log("mounted 被创建!");
          },
          destroyed:function(){
              console.log("destroy 销毁之后");
          },
          updated:function(){
              console.log("update 更新之后");
          }
      })
      var vm = new da0sy().$mount("#app");

      function destroy(){
          vm.$destroy();
      }
      function reload(){
          vm.$forceUpdate();
      }

      function tick(){
        vm.message="update message info ";
        vm.$nextTick(function(){
            console.log('message更新完后我被调用了');
        })
      }
    </script>
</body>
</html>

浏览器效果:

原文地址:https://www.cnblogs.com/Elva3zora/p/12510144.html

时间: 2024-10-14 21:59:22

Vue2.0 【第四季】第2节 实例方法的相关文章

Vue2.0组件之间通信

Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开发环境,我们先得装好git和npm这两个工具(如果有不清楚的同学请自行百度哦) 环境搭建步骤: 打开git ,运行 npm install --global vue-cli 这是安装vue的命令行 vue init webpack vue-demo 这是vue基于webpack的模板项目 cd vu

vue2.0学习(二)-全局API

vue2.0学习(二)-全局API GitHub源码 https://github.com/sunnyguyan/VueDemo 1.Vue.directive自定义指令 一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能 二.Vue.directive自定义指令 我们在第一季就学习了内部指令,

vue2.0学习(四)-实例和内置组件

vue2.0学习(四)-实例和内置组件 1.实例入门-实例属性 一.Vue和Jquery.js一起使用 下载可以去官网进行下载,我这里使用的版本是3.1.1,下载好后在需要的页面引入就可以了.当然你还有很多其它的方法引入jquery,只要可以顺利引入就可以了. <script type="text/javascript" src="../assets/js/jquery-3.1.1.min.js"></script> <!DOCTYPE

Vue2.0笔记——Vue实例

Vue实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 当创建一个 Vue 实例时,你可以传入一个选项对象,就如前面所提到的如:data,methods,computed,watch等等.一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的.可复用的组件树组成.举个例子,一个 todo 应用的组件树可以是这样的: 根实例Root └─ TodoList ├─ TodoIte

Vue2.0内部指令(中)|言Sir‘s blog

第四节: v-text & v-html 在html中输出data值时, 使用 { { message }} .但是这种情况是有弊端的,就是当我们网速很慢或者javascript出错时,会暴露我们的 { { message }} .Vue给我们提供的 v-text就是解决这个问题的. <p>{{ message }}</p>=<p v-text="message"></p> 如果在javascript中写有html标签,用v-te

Vue.js系列之项目搭建(vue2.0 + vue-cli + webpack )

1.安装node node.js环境(npm包管理器) cnpm npm的淘宝镜像 从node.js官网下载并安装node,安装过程很简单,一路"下一步"就可以了(傻瓜式安装).安装完成之后,打开命令行工具,输入 node -v,如果出现相应的版本号,则说明安装成功. npm包管理器,是集成在node中的,所以,直接输入 npm -v就会显示出npm的版本信息. 2.安装cnpm 在命令行中输入 npm install -g cnpm --registry=http://registr

Vue2.0总结———vue使用过程常见的一些问题

Vue目前的的开发模式主要有两种: 1.直接页面级的开发,script直接引入Vue 2.工程性开发,webpack+loader或者直接使用脚手架工具Vue-cli,里面的文件都配置好了 webpack可以进行配置,配置多文件入口,进行多页面开发 第二种Vue开发,结合webpack打包完文件会很大,怎么解决这个问题? 1.webpack代码拆分:code-spliting 2.提取公共(如提取css,js) 3.预渲染:使用prerender-spa-plugin插件 4.后台----开启压

Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信

Vue2.0与 [百度地图] 结合使用: 1.vue init webpack-simple vue-baidu-map 2.下载axios cnpm install axios; 3.在main.js中引入axios,并使用 import axios from 'axios' /* 把axios对象挂到Vue实例上面,其他组件在使用axios的时候直接 this.$http就可以了 */ Vue.prototype.$http = axios; 4.引入百度地图的js秘钥--->最好在inde

[js高手之路]Vue2.0基于vue-cli+webpack父子组件通信教程

在git命令行下,执行以下命令完成环境的搭建: 1,npm install --global vue-cli  安装vue命令行工具 2,vue init webpack vue-demo   使用vue命令生成一个webpack项目,项目名称为vue-demo 3,cd vue-demo 切入项目 4,npm install安装package.json中的所有依赖包 5,npm run dev运行项目 一.父组件向子组件传递数据 然后删除默认的Hello.vue组件,把App.vue整理成以下