• Vue :模板语法


    章节: 模板语法 > 组件 > 接口调用 > 路由 > webpack 模块化 > 脚手架  >  实战项目

    重点:生命周期钩子

    vue的实例

      var vm = new Vue({ // 选项 })

      有哪些参数:

        el :元素的挂载位置

        data:数据模型

        methods: 事件处理定义的方法,方法里边要访问vue实例的数据,使用 this 关键字 , this.msg

    模板语法

    插值表达式:

    {{ vlue }}

    指令

      指令的本质就是自定义属性,属性的意思就是 form标签有 action属性。

      指令的格式:以 v-开始,如: v-cloak 。v-cloak 用来解决闪动问题,就是刷新时显示 {{}} 插值表达式的符号。

      

     数据响应式:

      当数据内容改变,网页内容也改变,v-once 取消这样的效果,减少开销

    双向数据绑定:

      v-model ,用于表单,当表单里边的数据改变时,vue 的 data 数据也随之改变, 底层原理是v-bind  和 v-on 实现的

    事件绑定

      v-on:click          缩写为 @click

       事件函数的调用:

        1. 事件直接绑定函数名称,那么默认会传递事件对象作为函数第一个参数。

        <button v-on:click="say">Say hi</button>

        2. 如果事件绑定函数调用,那么事件对象必须作为最后一个参数传递,并且事件对象的名称必须是 $event  

         <button v-on:click="say('what' , $event )">Say what</button>

      事件修饰符:

        <!-- 阻止单击事件继续传播 -->  <a v-on:click.stop="doThis"></a>  外面再有个事件,阻止调用外面的事件 ,<div @click="do">    <a v-on:click.stop="doThis"></a>    </div>

        <!-- 提交事件不再重载页面 -->   <form v-on:submit.prevent="onSubmit"></form>

      按键修饰符:对按键进行监听 <input v-on:keyup.enter="submit"> 按下回车键时,调用函数 submit

    样式绑定

      v-bind :class    缩写 为  :class  。 <div v-bind:class="{ active: isActive }"></div>

      对样式的动态处理, active 为css样式名,如果 isActive 为 true 该样式就会显示。

      属性绑定

        v-bind:css 和 v-bind:style   缩写为  :css

      

    分支循环结构:

      v-if   v-else-if   v-else  控制元素是否渲染到页面。

      v-show 控制元素是否显示(已经渲染到界面)   相当于  style="display:none",修改值 true 或者 false 。

      

      v-for 

        <ul id="example-1">    <li v-for="item in items">    {{ item.message }}    </li>      </ul>

        提高循环的性能  <li :key=" id、index 或者 能和其他li区分的值 " v-for="item in items">    {{ item.message }}    </li>

        

      数组的更新和检测:  变异方法:是响应式的,修改后页面内容也会改变;替换方法:修改后页面内容不会改变; 其他响应式方法: Vue.set(vm.items, indexOfItem, newValue)    vm.$set(vm.items, indexOfItem, newValue)

      

    常用特性概述: 表单操作;自定义指令;计算属性;侦听器;过滤器;生命周期

       表单操作: 对四种表单的基本操作;表单修饰符 v-model.number 将符号换为数字  <input type="text" v-model.number="age">    .trim:去掉开始和结尾的空格   .lazy:将input 转化为 change (失去焦点才会触发数据双向绑定事件)

      自定义指令:

    // 注册一个全局自定义指令 `v-focus`
    Vue.directive('focus', {
      // 当被绑定的元素插入到 DOM 中时……
      inserted: function (el) {
        // 聚焦元素
        el.focus()
      }
    })

      局部指令:只能在当前的页面使用,在vue的实例定义这一个数据(类似data、methods)

    directives: {
      focus: {
        // 指令的定义
        inserted: function (el) {
          el.focus()
        }
      }
    }

       计算属性:

    计算属性与方法类似,不同的是方法没有缓冲,计算属性有缓存,只要message没有发生变化,多次访问reverseMessage都会返回之前计算的结果。方法每次都会执行函数。

    var vm = new Vue({
      el: '#example',
      data: {
        message: 'Hello'
      },
      computed: {
        // 计算属性的 getter
        reversedMessage: function () {
          // `this` 指向 vm 实例
          return this.message.split('').reverse().join('')
        }
      }
    })

       侦听器:侦听一个数值是否发生变化,用途: 注册用户时,判断用户名是否在 

    var vm = new Vue({
      el: '#demo',
      data: {
        firstName: 'Foo',
        lastName: 'Bar',
        fullName: 'Foo Bar'
      },
      watch: {
        firstName: function (val) {
          this.fullName = val + ' ' + this.lastName
        },
        lastName: function (val) {
          this.fullName = this.firstName + ' ' + val
        }
      }
    })
    语法示例
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
        </style>
    </head>
    <body>
        <div id="app">
            <div class="tab">
                <span>用户名:</span>
                <input type="text" v-model.lazy="name">
                <span>{{tip}}</span>
            </div>
        </div>
    
    </body>
    <script type="text/javascript" src="vue.js"></script>
    <script type="text/javascript" >
    /*
    侦听器
    1、采用侦听器监听用户名变化
    2、调用后台进行验证
    3、根据结果调整提示信息
    */
        var vm = new Vue({
            el: '#app',
            data:{
                name: '',
                tip: ''
            },
            methods:{
                checkName:function(uname){
                    var that = this ;
                    setTimeout(function(){
                        if(uname == "admin"){
                            that.tip = "用户名已存在";
                        }else{
                            that.tip = "用户名可以使用";
                        }
                    },1000);
                }
            },
            watch: {
                name:function(val){
                    //调用方法验证用户名是否正确
                    this.checkName(val);
                    this.tip = "正在验证...";
                }
            }
        });
    </script>
    </html>
    判断用户名称是否存在

       过滤器: 格式化数据,将日期格式化为指定日期格式,将字符串首字母大写。

       生命周期钩子:

        挂载:1、beforeCreate   2、create  3、beforeMount  4、mounted  <这个方法被调用,表示实例已经创建完成,页面模板内容已经存在

        更新:1、beforeUpdate 2、updated 

        销毁:1、beforeDestroy  2、destroyed

  • 相关阅读:
    (01)Docker简介
    Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)
    2019牛客暑期多校训练营(第三场)G: Removing Stones(启发式分治)
    POJ
    高维前缀和
    HDU
    BZOJ
    HDU
    POJ
    Gym-100648B: Hie with the Pie(状态DP)
  • 原文地址:https://www.cnblogs.com/Lemonades/p/12459752.html
Copyright © 2020-2023  润新知