zoukankan      html  css  js  c++  java
  • vue 之 基础知识(@的使用)

    (1) 文本插值 {{}}

          {{ 表达式(有返回值) }}  

    (2) v-bind  一般用在属性上

        1> <innput type="text" :value="val">

        2><img :src="url"/>     url:'../assets/logo.png'    会出现图片不显示问题   

    src: require("../assets/logo.png"),
    

        扩展:语法糖:  v-bing:title="title"   可以简写为   :title="title"

    (3)v-on指令 绑定事件  

         1>三种写法:

          第一种:内联语句  (注意:只能写简单的表达式且console.log('111'),这种语句会报错)

    <button v-on:click="isShow = true">点击</button>
    <span v-show="isShow">测试内容</span>
    

      第二种:定义的方法放在methods中

    <button @click="fn">调用methods中的方法</button>
    

      第三种:定义的方法放在methods中,传参

    <button @click="fn1('123', $event)">第三种</button>
    
    fn1(res, e) {
          console.log(res, e);
    }

    或者是
    <button @click="fn2">第四种</button>
    fn1(e) {
       console.log(e);
    }


         扩展:语法糖: v-on:click="fn"    可以简写为     @click="fn"

     (4) 事件修饰符

       1> @click.prevent  阻止默认行为

    <a href="http://baidu.com" @click.prevent="fn5"></a>
    

     2>@click.prevent.stop  或者  @click.stop   阻止冒泡 

        3>@keyup.13,  @keyup.enter 等等     按键修饰符,监听用户键盘

    (5) 条件渲染指令

       1> v-if   v-else-if    v-else

        2>v-show

    (6)v-model  双向绑定,主要是给表单元素来使用

        1>文本框   

    <input type="text" v-model="message" />

        2>单选框 

    <input type="radio" value="男" v-model="sex" />男
    <input type="radio" value="女" v-model="sex" />女
    

     3>下拉框

    <select name="city" id="city" v-model="city">
          <option value="bj">北京</option>
          <option value="sh">上海</option>
          <option value="hz">杭州</option>
    </select>
    

    (7)v-model 双向绑定 修饰符

        1>v-model.number   如果想自动将用户输入值,parseFloat转成数字类型,可用.number修饰符  

    <input type="number" v-model.number="age" />
    

     2>v-model.trim  自动过滤用户输入的首尾空白字符 

    <input type="text" v-model.trim="message" />
    

     3>v-model.lazy 在change时而非input时更新,通过lazy修饰符

    <input type="text" v-model.lazy="msg" />
    

    (8)v-text 和 v-html

    <h2 v-text="message"></h2>
    <h2 v-html="message"></h2>

    (9) v-for 的使用

       1>第一种

    <ul>
          <li v-for="item in citys" :key="item">{{ item }}</li>
    </ul>
    citys: ["北京", "上海", "深圳", "杭州"],
    

     2>第二种

    <ul>
          <li v-for="(item, index) in persons" :key="index">
            {{ item.name }}
          </li>
    </ul>
    

      

    (10) computed 计算属性

      1.写起来像一个方法

      2.用起来像一个属性

      3.计算属性不要和data里面的属性

    computed: {
        totalPrice() {
          let res = 0;
          this.list.forEach((item) => {
            res += item.price;
          });
          return res;
        },
        svg() {
          console.log(this.totalPrice);
          console.log(this.list.length);
          return this.totalPrice / this.list.length;
        }
      }

            <td colspan="2">总价钱:{{ totalPrice }}</td>

     (11) 过滤器

    第一种:全局

    Vue.filter("date", (val, type = "YYYY-MM-DD") => {
      return moment(val).format(type);
    });  

    第二种:局部

    filters: {
        date1: function(val) {
          return moment(val).format("YYYY-MM-DD");
        },
      },

    (12)自定义指令

      1>全局指令

       Vue.directive('red',{

      inserted:function(el){

              el.style.color:'red'

          }

      })

      2>局部指令

    directives: {
        focus: {
          inserted(el) {
            el.focus();
          },
        },
      },

    (13)监听

       1> 监听简单类型

    watch:{
        msg:(newVal)
       {
           console.log('msg有变化')
       }  
    }
    

     2>监听复杂类型之对象

    watch:{
       obj:{
          deep:true,//深度监听
    immediate:true ,//立即监听 页面刷新也会监听 handler(newObj){ console.log('监听成功') } } }
    或者
    watch:{
        'obj.name'(newName){
         console.log('哈哈'+newName)
    } } }

      3> 监听复杂类型之数组

    list:{
        deep:true,
        handle(newList){
           console.log(newList)
       }  
    }
    或者
    list(newList)
    {
    console.log(newList)
    }

      

    (14)组件

      1>注册全局组件

      Vue.component("my-cpn", cpnC);  

      2>注册局部组件

     var vm = new Vue({
         el: "#app",
         data: {},
         components: {
           cpn: cpnC, //重要代码
         },
     });
    

      

      3>父子组件

     <1>父传子

     第一步:子组件写props

         1/ 可以是数组 ['name','age']

         2/可以是对象

    props:{
    propE:{ type:Object,或者可以是其他数据类型 require:false default:function(){ return {message:'hello'} } } }

    第二步:在子组件上写参数

    <son :cname="name" :cage="age" :cobjects="objects">
    

      

     <2>子传父

     第一步:子组件触发自定义事件

     this..$emit('my-click',xxx)

    第二步:给子组件添加自定义事件,并且绑定事件处理函数

    <child @my-click='fn'></child>

    第三步:触发自定义事件,函数会被调用

    fn(xxx){

       ...

    }

    propE:{

    type:Object,

    require:false

    default:function(){

    return {message:'hello'}

    }

    }

     

     

    vue中绝对路径@的使用

    @指代src目录  

    在script 和 template中直接使用

    <script>
      import Login from '../views/Login'
      import Login from '@/views/Login'
    </script>
    
    <template>
       <img src='../../assets/1.jpg'></img>
       <img src='@/assets/1.jpg' alt="">
    </template>
    

     在<style里面使用不一样

    body{
       background:url(../assets/1.jpg)
       background:url(~@/assets/1.jpg)
      
    }
    

      

     

     

     

  • 相关阅读:
    EOS 数据库RAM使用量的计算
    EOS require_auth函数
    EOS测试链智能合约部署调用
    安装EOS合约工具eosio.cdt
    Linux Ubuntu下搭建Flutter桌面环境
    VMware虚拟机与物理机共享文件的方法总结
    虚拟机macOS Mojave10.14安装XCode10.1
    VMware14 安装 macOS Mojave教程
    VMware 14安装OS X10.11
    Mac OS虚拟机安装VMware Tools的方法
  • 原文地址:https://www.cnblogs.com/zmztya/p/14455120.html
Copyright © 2011-2022 走看看