• vue全局API


    阅读目录

    1.Vue.extend({})

    1. Vue.extend({})
    extend是构造一个组件的语法糖。如下创建一个vue构造器,如下代码:

    <!DOCTYPE html>
    <html>
      <head>
        <title>演示Vue</title>
        <style>
          img { width: 180px; height: 180px; overflow: hidden;}
        </style>
      </head>
      <body>
        <div id='demo'></div>
      </body>
      <script src="https://tugenhua0707.github.io/vue/transition/vue.js"></script>
    
      <script type="text/javascript">
        // 创建构造器
        var P = Vue.extend({
          template: '<p>{{msg}}</p>',
          data: function() {
            return {
              msg: 'aa'
            }
          }
        });
        // 创建实例
        new P().$mount('#demo');
      </script>
    </html>

    查看效果

    2.Vue.nextTick([callback, context])

    2. Vue.nextTick([callback, context])
    作用是:在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法。
    如下代码:

    <!DOCTYPE html>
    <html>
      <head>
        <title>演示Vue</title>
        <style>
          img { width: 180px; height: 180px; overflow: hidden;}
        </style>
      </head>
      <body>
        <div id='demo'>{{ msg }}</div>
      </body>
      <script src="https://tugenhua0707.github.io/vue/transition/vue.js"></script>
    
      <script type="text/javascript">
        var vm = new Vue({
          el: '#demo',
          data: {
            msg: '123'
          }
        });
        // 更改数据
        vm.msg = 'new message';
        console.log(vm.$el.textContent); // 123
        Vue.nextTick(function() {
          console.log(vm.$el.textContent); // new message
        });
      </script>
    </html>

    查看效果

    比如 当我设置 vm.msg = 'new message', 该组件不会立即渲染,当刷新队列时,组件会在事件循环队列清空时的下一个tick更新,如上代码,
    当设置 vm.msg 然后打印还是之前的数据,然后会延迟执行 Vue.nextTick该方法。最后会更新数据。

    那么在组件内如何使用 vm.$nextTick()方法呢?可以看如下demo

    <!DOCTYPE html>
    <html>
      <head>
        <title>演示Vue</title>
        <style>
          img { width: 180px; height: 180px; overflow: hidden;}
        </style>
      </head>
      <body>
        <div id='demo'> 
          <component1></component1>
        </div>
      </body>
      <script src="https://tugenhua0707.github.io/vue/transition/vue.js"></script>
    
      <script type="text/javascript">
        Vue.component('component1', {
          template: '<span @click="updateMessage()">{{ msg }}</span>',
          data: function() {
            return {
              msg: 'new message'
            }
          },
          methods: {
            updateMessage: function() {
              this.msg = 'update msg';
              console.log(this.$el.textContent); // new message
              this.$nextTick(function() {
                console.log(this.$el.textContent); // update msg
              });
            }
          }
        })
        new Vue({
          el: '#demo'
        });
      </script>
    </html>

    查看效果

    页面加载完的时候 显示 new message信息,当我点击一下的时候, 控制台先打印 new message 信息,接着会执行 this.$nextTick函数,最后打印 update msg 信息了。

    3.Vue.set(object, key, value)

    3. Vue.set(object, key, value)
    作用:设置对象的属性。
    设置属性 如下方法会报错:

    var app = new Vue({
       el: '#demo',
      data: {
        age: 29
      }
    });
    Vue.set(app.$data, 'name', 'longen');

    因为不能直接在data对象上增加属性,但是可以在data里的对象上增加属性, 如下代码就可以了;

    <!DOCTYPE html>
    <html>
      <head>
        <title>演示Vue</title>
        <style>
          img { width: 180px; height: 180px; overflow: hidden;}
        </style>
      </head>
      <body>
        <div id='demo'> 
          {{ msg.age }}
        </div>
      </body>
      <script src="https://tugenhua0707.github.io/vue/transition/vue.js"></script>
    
      <script type="text/javascript">
        var app = new Vue({
          el: '#demo',
          data: {
            msg: {
              age: 10
            }
          }
        });
        Vue.set(app.msg, 'name', 'longen');
        console.log(app.msg);  // 打印出对象,有刚刚设置的属性name {}
      </script>
    </html>

    查看效果

    4.Vue.delete(object, key)

     作用是:删除对象的属性。如下demo代码:

    <!DOCTYPE html>
    <html>
      <head>
        <title>演示Vue</title>
        <style>
          img { width: 180px; height: 180px; overflow: hidden;}
        </style>
      </head>
      <body>
        <div id='demo'> 
          {{ msg.age }}
        </div>
      </body>
      <script src="https://tugenhua0707.github.io/vue/transition/vue.js"></script>
    
      <script type="text/javascript">
        var app = new Vue({
          el: '#demo',
          data: {
            msg: {
              age: 10
            }
          }
        });
        Vue.set(app.msg, 'name', 'longen');
        console.log(app.msg);  // 在控制台打印出对象,有刚刚设置的属性name {}
        // 现在删除对象的属性 name
        Vue.delete(app.msg, 'name');
        console.log(app.msg);  // 在控制台打印出 对象 ,可以看到美元name属性了
      </script>
    </html>

    查看效果

    5.Vue.directive(id, [definition])

    作用是:注册或获取全局指令。也可以理解为注册自定义指令。
    比如页面上有一个input框,当页面加载时候,元素将获得焦点。如下代码:

    <!DOCTYPE html>
    <html>
      <head>
        <title>演示Vue</title>
        <style>
          img { width: 180px; height: 180px; overflow: hidden;}
        </style>
      </head>
      <body>
        <div id='demo'>
          <input v-focus />
        </div>
    
      </body>
      <script src="https://tugenhua0707.github.io/vue/transition/vue.js"></script>
    
      <script type="text/javascript">
        // 注册一个全局自定义指令 v-focus
        Vue.directive('focus', {
          // 当绑定元素插入到DOM中
          inserted: function(el) {
            // 聚焦元素
            el.focus();
          }
        })
        new Vue({
          el: '#demo'
        })
        // 返回已注册的指令
        var myDirective = Vue.directive('focus');
        console.log(myDirective);
      </script>
    </html>

    查看效果

    6.Vue.mixin(mixin)

    Vue.use(plugin)
    参数:{Object | Function }
    作用:安装Vue.js插件,如果插件是一个对象,必须提供install方法,如果插件是一个函数的话,它会作为install方法,install方法将被作为Vue参数调用。

    Vue.mixin(mixin)

    参数是 {Object}
    作用: 全局注册一个混合,影响注册之后所有创建的每个vue实例。
    比如如下demo:

    // mixin.js
    module.exports = {
      created: function () {
        this.hello()
      },
      methods: {
        hello: function () {
          console.log('hello from mixin!')
        }
      }
    }

    然后在 test.js可以如下编码:

    // test.js
    var myMixin = require('./mixin')
    var Component = Vue.extend({
      mixins: [myMixin]
    })
    var component = new Component() // -> "hello from mixin!"

    就可以使用了。

  • 相关阅读:
    剑指 Offer 46. 把数字翻译成字符串
    剑指 Offer 45. 把数组排成最小的数
    1319.连通网络的操作次数-并查集
    数字序列中某一位的数字
    989.数组形式的整数加法
    java多线程
    剑指offer 48 -最长不含重复字符的子字符串 动态规划
    springboot 使用 lombok插件中的@data 注解
    netty 转发服务
    在静态方法中获取properties /yml 配置文件中的信息
  • 原文地址:https://www.cnblogs.com/tugenhua0707/p/6919982.html
Copyright © 2020-2023  润新知