美文网首页
vue学习记录第三天

vue学习记录第三天

作者: 大白熊_8133 | 来源:发表于2018-11-21 22:22 被阅读0次

悄咪咪的说讲课的老师说话声音好难听啊

复习

  • v-model(单选时只有一个数,多选的时候是数组,提供一个value)
  • 修饰符 .number .lazy
  • 按键修饰符 .enter .ctrl .keyCode
  • v-cloak
  • axios
    1. create(){}钩子函数,在数据初始化后调用
    2. axios.get().then
    3. promise
  • filter()过滤器
  • computed:{}计算属性,不是方法,方法没有缓存,computed会根据依赖的属性进行缓存,必须是响应式变化,像get中return date.now()并不是响应式变化
    1. get(),引入时调用,返回什么值,赋予什么属性值
    2. set(),赋值时调用
  • 事件
    1. stopPropgation 阻止冒泡,冒泡事件的意思就是一个按钮绑定一个click事件,click事件会依次在父级元素中触发,stopProgation()组织目标元素的事件冒泡到父级元素。
    2. cancelBabble=true和stopProgation效果相同
    3. preventDefault,returnValue=false,阻止元素的默认行为
    4. xxx.addEventListener('click',fn)
  • jQuery once flag&&a()
  • e.srcElement&&e.target 判断事件源绑定事件,捕获当前事件作用的对象
    -v-if以及v-show
  1. v-else必须和v-if连用,中间不能有其他标签

事件修饰符

阻止事件传播

冒泡和捕获都会被阻止
@click.stop=""

事件捕获

事件捕获是从上到下,指不太具体的节点,比如window先接收到事件,最具体的节点最后接收到事件,在JS中将addEventListener的第二个参数改为true就会由捕获的方式获得最终的节点
vue中实现在父级加一个
@click.capture=""

  <body>
    <div id="app">
      <div @click.capture="parent">parent
        <div @click="child">child
          <div @click="grandson">grandson
          </div>
        </div>
      </div>

      </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      let vm=new Vue({
        el:"#app",
        methods:{
          parent(){
            alert("parent")
          },
          child(){
            alert("child")
          },
          grandson(){
            alert("grandson")
          }
        },
        data:{

        }
      })
      </script>
  </body>

对于这段程序的执行结果应该是
alert(parent)
alert(grandson)
alert(child)
这是因为,点击grandson,parent开始捕获,但是child没有捕获,所以直接获得grandson,然后开始冒泡

阻止默认行为

@click.pervent=""

事件只绑定一次

@click.once=""

判断事件源绑定

@click.self=""

Vue构造函数

希望所有的实例都能使用过滤器,使用全局过滤器
要放在页面的顶部,不可以new完后再定义

Vue.filter('my',(data)=>{return data+'111'}

watch

computed不支持异步
好的是时候重温异步了
每次异步一定要拿出来说的东西就是setTimeout(),看以下的程序

    for(var i=0; i<3; i++){
        setTimeout(function(){
            i+=i;
            console.log(i);
        },1000)
    }
    var i = 1;
    console.log(i);

输出的结果是 1 2 4 8
原因是整个程序的运行顺序是,for先执行,setTimeout也进入队列三次,i到达3,然后执行var i=1,i被赋予值1,console.log(1),然后时间到了,三次setTimeout被执行

watch,computed以及methods的区别

  1. computed VS methods 计算属性是基于依赖进行缓存,依赖发生变化,才会重新计算,但是调用方法是在每次触发渲染时都会再次执行
  2. computed VS watch
    当有一些数据需要随着其他数据的变动而变动,使用computed
    当需要异步或者开销较大的操作的时候使用watch
    watch可以监控值的变化,在data中定义属性进行监控,watch中的属性名要和监控的属性名相同
watch:{
a(newVal,oldVal):{}
}

只有值变化才会变化,假如两次输入的值相同,并不会触发

watch另一种调用方法

vm.$watch('a',function(){})

动态绑定样式

v-bind

动态绑定“属性”

动态绑定class和style

第一种方法 对象

首先动态绑定的方式是:class, :class和class绑定的属性不冲突
绑定:{className:isActive}
多个类用逗号隔开

  <body>
    <div id="app">
      <!--{className:isActive}-->
      <div id="a" class="x" :class="{z:flag,y:!flag}">大白熊
        </div>
      </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      let vm=new Vue({
        el:"#app",
        data:{
          flag:true
        }
      })
      </script>
  </body>

第二种数组

在data定义需要用的类,:class后用数组绑定
:class="[class1,class2,'z']"
或者:class="[class1,class2,{z:flag]"

<body>
    <div id="app">
      <!--{className:isActive}-->
      <div id="a" :class="[class1,class2,'z']">大白熊
        </div>
      </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      let vm=new Vue({
        el:"#app",
        data:{
          class1:"x",
          class2:"y",
          flag:true
        }
      })
      </script>
  </body>

template

template标签,是vue提供的没有任何实际意义的标签,可以用来包裹元素,并且使用v-if,v-show并不支持

      <template v-if="false">
        <div>企鹅</div>
        <div>企鹅</div>
        <div>企鹅</div>
        <div>企鹅</div>
      </template>
      <div v-else>大白熊
        </div>

利用这个简单弄了一个注册登录界面切换

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      .ui{
        width:500px;
        height:20px;
        list-style: none;
        margin:0;
        padding:0;
      }
      .ui li{
        width:70px;
        height:20px;
        margin-left:10px;
        float:left;
        text-align:center;
        background-color:lightblue;
        border:1px solid black;
        border-radius:5px 5px 0 0;
      }
      .ui li:hover
      {
        cursor:pointer
      }
      .content
      {
        width:500px;
        height:300px;
        margin-top:0;
        border:1px solid black;
      }
    </style>
  </head>

  <body>
    <div id="app">
     <ul class="ui">
       <li @click="flag=true">注册</li>
       <li @click="flag=false">登录</li>
       </ul>
      <div class="content">
        <template v-if="flag">
          <br>
          <label>用户名:</label>
          <input type="text" key="1">
          <br>
          <label>密码:</label>
          <input type="text" key="2">
          <br>
          <label>确认密码:</label>
          <input type="text">
        </template>
        <template v-else>
          <br>
          <label>用户名:</label>
          <input type="text" key="3">
          <br>
          <label>密码:</label>
          <input type="text" key="4">
        </template>
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
    new Vue(
    {
      el:"#app",
      data:{
        flag:true
      }
    }
    )
    </script>
  </body>
</html>

相同结构复用

默认情况下切换dom时相同的结构会被复用,如果不需要复用,加上key属性

相关文章

  • vue学习记录第三天

    悄咪咪的说讲课的老师说话声音好难听啊 复习 v-model(单选时只有一个数,多选的时候是数组,提供一个value...

  • vue学习记录第三天2

    没全部看完,我是菜鸡 动态绑定样式 和class方法相同,但是需要使用驼峰命名 对象方法 数组 路由 实现单页开发...

  • Vue 学习

    vue 学习记录。 参考网址 Vue:https://cn.vuejs.org/v2/guide/ Vue-rou...

  • vue

    vue介绍 第一天 第二天 第三天---第八天 Vue的基本概念 Vue是什么? Vue能做什么? 如何学习? 作...

  • Vue常用文档记录

    最近正在学习Vue,对Vue常用的一些api文档地址进行总结(仅为方便自己查看与学习记录) 1、Vue官方文档 ...

  • Framework7 Vue 学习记录

    记录项目过程中学习的Framework7 Vue组件。 Navbar Vue Component Navbar 是...

  • Vue学习记录

    修改npm run build的输出目录

  • vue学习记录

    vue全家桶 vue生命周期 生命周期的理解 新建项目 ①:cnpm install vue-cli -g (全...

  • Vue学习记录

    vue结构: vue常用标签 v-cloak 去除页面闪烁问题 v-text 会覆盖元素中原本的内容,但是 插值表...

  • Vue学习记录

    Here[http://cdn.hellooooo.top/image/blog/2020/09/vue/vue....

网友评论

      本文标题:vue学习记录第三天

      本文链接:https://www.haomeiwen.com/subject/qwncqqtx.html