zoukankan      html  css  js  c++  java
  • Vue2.0 【第四季】第2节 实例方法

    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>
    

    浏览器效果:

    Keep moving on!
  • 相关阅读:
    (转) tcp的注册端口
    [转] Android中C&C++源码库的初步研究
    (转)vim7.3中文乱码解决方法
    {转} Eclipse 高亮显示选中的相同变量
    libcurl 一个实现了client请求http,ftp的库
    c#操作文件夹
    OutputCache祥解
    非静态的字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用
    IXMLDOMDocument 成員
    关于中日文和UNICODE之间编码的转换(2008725 15:05:00)
  • 原文地址:https://www.cnblogs.com/Elva3zora/p/12510144.html
Copyright © 2011-2022 走看看