vue基础知识

一、表单操作

1.1表单绑定语法

    <body>
    <div id="app">
      <!-- 表单元素 -->
      姓名: <input type="text" v-model="name" /><br />
      性别:
      <input type="radio" v-model="sex" value="男" name="sex" />男
      <input type="radio" v-model="sex" value="女" name="sex" />女 <br />爱好
      <input type="checkbox" v-model="hobby" value="唱歌" />唱歌
      <input type="checkbox" v-model="hobby" value="跳舞" />跳舞
      <input type="checkbox" v-model="hobby" value="敲代码" />敲代码 <br />
      户籍
      <select v-model="city">
        <option value="北京">北京</option>
        <option value="保定">保定</option>
        <option value="上海">上海</option> </select
      ><br />
      自我介绍
      <textarea v-model="content" cols="30" rows="10"></textarea><br />
      <button @click="handle">添加</button>
    </div>
    <script>
      let vue = new Vue({
        el: "#app",
        data: {
          name: "",
          sex: "",
          hobby: [],
          city: "",
          content: ""
        },
        methods: {
          handle: function() {
            console.log(this.name); //获取用户输入的姓名
            console.log(this.sex); //获取单选按钮的中的选项
            console.log(this.hobby); //获取复选框中的选项
            console.log(this.city); //获取下拉菜单中的内容
            console.log(this.content); //获取文本域中的内容
          }
        }
      });
    </script>
  </body>

 1.2表单修饰符

  • trim是去掉前后空格
  • lazy是失去焦点以后触发
  • number是输入的是字符串,自动转换成数字 
    <div id="app">
        <!-- .number是把表单元素中的内容转换成数字 -->
        <input type="text" v-model.number="msg" @keyup="handle" />
        <!-- .trim是去除用户输入内容的前后空格 -->
        <input type="text" v-model.trim="msg" />
        <!-- .lazy是把onchange事件转换成onblur事件 -->
        <input type="text" v-model.lazy="msg" />
        <div>{{ msg }}</div>
    </div>
    <script>
        let vue = new Vue({
            el: "#app",
            data: {
                msg: ""
            },
            methods: {
                handle: function() {}
            }
        });
    </script>

 二、计算属性(computed)

2.1为什么需要计算属性

有的时候我们会在模板语法中做一些相对复杂些的逻辑,如果用计算属性会比较简单。

<body>
    <div id="app">
        <p>{{ msg }}</p>
        <p>{{ getRes }}</p>
        <p>{{ getRes }}</p>
        <p>{{ handle() }}</p>
        <p>{{ handle() }}</p>
        <p>{{ handle() }}</p>
    </div>
</body>

<script>
    var vue = new Vue({
        el: "#app",
        data: {
            msg: "hello"
        },
        methods: {
            handle: function() {
                console.log("计算方法");
                return this.msg.slice(0, 1).toUpperCase() + this.msg.slice(1);
            }
        },
        // 计算属性
        computed: {
            getRes: function() {
                console.log("计算属性");
                // slice(开始截取的索引号,截取的长度)   toUpperCase()把字符串转换成大写
                return this.msg.slice(0, 1).toUpperCase() + this.msg.slice(1);
            }
        }
    });
</script>

2.2计算属性和方法的区别

  1. 方法调用的时候 需要用小括号,计算属性不需要
  2. 计算属性有缓存,可以从缓存中读取调用多次,方法调用一次执行一次

三、监听器(watch)

3.1监听器的用法

侦听器一般用于执行异步操作或者比较消耗性能的时候,主要是用于监听data中的数据变化。

<body>
    <div id="app">
        姓 <input type="text" v-model="xing" /> 
        名<input type="text" v-model="ming" />
        <div>{{ fullname }}</div>
        <div>{{ num }}</div>
    </div>
</body>

<script>
    var vue = new Vue({
        el: "#app",
        data: {
            xing: "",
            ming: "",
            fullname: "",
        },
        methods: {},
        //   监听器
        watch: {
            xing: function(val) {
                console.log(val);
                this.fullname = val + this.ming;
            },
            ming: function(val) {
                this.fullname = this.xing + val;

            }
        }
    });
</script>

 四、过滤器

4.1简介

vue中的过滤器一般用于日期格式化或者把字符串比如大写变小写等等格式处理

4.2全局过滤器

全局的在整个项目中起作用

语法:

Vue.filter("过滤器名字", function(val) {
   处理逻辑
 });

4.3局部过滤器

局部的只能在本组件中起作用

 语法:

filters: {
   过滤器名称: function(val) {
           处理逻辑
    }
  }

 案例:

  <body>
    <div id="app">
      <div>{{ price | handle }}</div>
      <div>{{ num | tofix }}</div>
    </div>
  </body>

  <script>
    //   过滤器有两种定义方法:
    //   1、全局过滤器
    Vue.filter("tofix", function(val) {
      return val.toFixed(2);
    });
    var vue = new Vue({
      el: "#app",
      data: {
        price: 5.99,
        num: 56.7789,
        time: 1234567
      },
      methods: {},
      //  2、 局部过滤器
      filters: {
        handle: function(val) {
          return "¥" + val;
        }
      }
    });
  </script>

五、vue生命周期

挂载阶段:主要是初始化数据用的

  1. beforeCreate
  2. created
  3. beforeMount
  4. mounted

更新阶段:元素或者组件的变更

  1. beforeUpdate
  2. updated

销毁阶段:

  1. beforeDestroy
  2. destroyed
<body>
    <div id="app">
      <div ref="box"></div>
      <p ref="ele"></p>
    </div>
  </body>

  <script>
    var vue = new Vue({
      el: "#app",
      data: {
        num: 10
      },
      methods: {},
      beforeCreate: function() {
        // console.log(this.num);
        // console.log(this.$refs.box);
      },
      created: function() {
        // console.log(this.num);
      },
      beforeMount: function() {},
      mounted: function() {
        this.$refs.box.innerHTML = "1111";
        console.log(this.$refs.box);
      },
      beforeUpdate: function() {},
      updated: function() {},
      beforeDestroy: function() {},
      destroyed: function() {}
    });
  </script>

 

 主要记住:

1、created函数及以后才能处理data中的数据

2、mounted函数及以后才能对DOM元素获取并处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值