2021-07-23大连东软实训第四天---vue

简介: 2021-07-23大连东软实训第四天---vue

数据库一个表对应一个类,表由子段组成,类由属性组成,互相对应,查表就是查一组对象,一个的对象数组,在vue迭代中最多的就是对象数组,

button默认的type是submit的,一提交就刷新页面,所以要想让他成为一个普通的按钮就type=button

全局过滤器+调用


全局不能定义到vm实例上,必须定义到外部

注意第一个参数第二个参数的区别

局部过滤器+调用


时间过滤器

过滤器加参数用pattern接受

让9变09用padStart,注意是大写

点击回车就添加,调用add事件,如果换成别的键比如f2就不好使,

如果用f2的话可以写113

记住太费劲,vue允许自定义键盘码

要焦点

自定义指令,全局和局部


自定义指令,此时el相当于

input

bind也行,但是全局不行,执行最早,当在元素上使用自定义指令时,就会被调用。此时,内存中的dom树,还没有被渲染到页面中,只执行一次以后,渲染以后不再执行,inserted当dom树被渲染到页面时执行,update只要更新就执行

如何给赋值?

如果有-就必须加‘’,上图是一个简写的形式,此时表示bind或update时该指令被执行。

生命周期


所以不能用data和method里面的东西

vue动画,三种方式


transform和transition过渡

动画分为两个阶段,入场和离场,四个状态

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>切换效果</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style type="text/css">
      .v-enter,.v-leave-to{
        opacity: 0;
        transform:translateX(200px) ;
      }
      .v-enter-active,
      .v-leave-active{
        transition: all 0.8s ease;
      }
      .my-enter,.my-leave-to{
        opacity: 0;
        transform:translateY(200px) ;
      }
      .my-enter-active,
      .my-leave-active{
        transition: all 0.8s ease;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button @click="flag=!flag">toggle</button>
      <transition name='my'>
        <h3 v-if="flag">{{msg}}</h3>
      </transition> 
    </div>
    <div id="app1">
      <button @click="flag=!flag">toggle</button>
      <transition>
        <h3 v-if="flag">{{msg}}</h3>
      </transition> 
    </div>
    <script type="text/javascript">
      let vm=new Vue({
        el:'#app',
        data:{
          msg:"被执行的动画效果",
          flag:false
        },
        methods:{
      }
      });
      let vm1=new Vue({
        el:'#app1',
        data:{
          msg:"被执行的动画效果",
          flag:false
        },
        methods:{
      }
      });
    </script>
  </body>
</html>

name属性就是前缀

使用第三方动画库 Animate.css

https://animate.style/

第三种方式用钩子函数

https://cn.vuejs.org/v2/guide/transitions.html#JavaScript-%E9%92%A9%E5%AD%90

前四个进,后四个出

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style type="text/css">
      .ball{
        width: 20px;
        height: 20px;
        background-color: red;
        border-radius: 50%;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button @click="flag=!flag">加入购物车</button>
      <transition
        v-on:before-enter="beforeEnter"
        v-on:enter="enter"
        v-on:after-enter="afterEnter"
        >
        <div class="ball" v-if="flag"></div>
      </transition>
    </div>
    <script type="text/javascript">
      let vm=new Vue({
        el:'#app',
        data:{
          flag:false
        },
        methods:{
          //el表示要执行动画的元素
          beforeEnter(el){
            el.style.transform='translate(0,0)';
          },
          enter(el){
            el.offsetLeft;//不加的话直接跳转没有移动的过程,offset强制重新绘制页面
            el.style.transform='translate(100px,450px)';
            el.style.transition='all 0.8s ease';
            done();//立刻执行afterEnter
          },
          afterEnter(el){
            this.flag=!this.flag;
          }
      }
      });
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      li{
        border:2px dashed #aaa;
        height:50px;
        line-height:50px;
        width: 100%;
      }
      li:hover{
        background-color:#aa4765;
      }
      .v-enter,.v-leave-to{
        opacity: 0;
        transform:translateY(200px) ;
      }
      .v-enter-active,
      .v-leave-active{
        transition: all 0.6s ease;
      }
      .v-move{
        transition: all 0.8s ease;
      }
      .v-leave-active{
        position: absolute;
      }
    </style>
  </head>
  <body>
    <div id="app">
        id:<input v-model="Userid" />
        name:<input v-model="Username" />
        <button @click="add()">添加</button>
        <!--<ul>    tag属性修改transition-group编译后默认为span-->
          <!--为多个元素添加动画-->
          <transition-group appear tag="ul">
          <li v-for="(item,index) in Userlist" :key='item.Userid1' @click="del(index)" >
            {{item.Userid1}}---------------{{item.Username1}}
          </li>
          </transition-group>
        </ul>
    </div>
    <script type="text/javascript">
      let vm=new Vue({
        el:'#app',
        data:{
            Userid:'',
            Username:'',
            Userlist:[
              {
              Userid1:'1',
              Username1:'张飞'}
          ]
        },
        methods:{
          add(){
            let user= {Userid1:this.Userid,Username1:this.Username};
            this.Userid=this.Userlist.push(user);
            this.Userid=this.Username='';
          },
          del(index){
            this.Userlist.splice(index,1);
          }
      }
      });
    </script>
  </body>
</html>


目录
相关文章
|
16小时前
|
JavaScript
vue页面加载时同时请求两个接口
vue页面加载时同时请求两个接口
|
16小时前
|
JavaScript
vue里样式不起作用的方法,可以通过deep穿透的方式
vue里样式不起作用的方法,可以通过deep穿透的方式
14 0
|
16小时前
|
移动开发 JavaScript 应用服务中间件
vue打包部署问题
Vue项目`vue.config.js`中,`publicPath`设定为&quot;/h5/party/pc/&quot;,在线环境基于打包后的`dist`目录,而非Linux的`/root`。Nginx代理配置位于`/usr/local/nginx/nginx-1.13.7/conf`,包含两个相关配置图。
vue打包部署问题
|
16小时前
|
JavaScript 前端开发
iconfont 图标在vue里的使用
iconfont 图标在vue里的使用
17 0
|
16小时前
|
JavaScript
vue打印v-model 的值
vue打印v-model 的值
|
16小时前
|
JavaScript
Vue实战-组件通信
Vue实战-组件通信
7 0
|
17小时前
|
JavaScript
Vue实战-将通用组件注册为全局组件
Vue实战-将通用组件注册为全局组件
7 0
|
16小时前
|
JavaScript 前端开发
vue的论坛管理模块-文章评论02
vue的论坛管理模块-文章评论02
|
16小时前
|
JavaScript Java
vue的论坛管理模块-文章查看-01
vue的论坛管理模块-文章查看-01
|
16小时前
|
资源调度 JavaScript 前端开发
vue 项目运行过程中出现错误的问题解决
vue 项目运行过程中出现错误的问题解决
13 1