Vue基础三

事件处理

<button v-on:click="handler">事件一</button>
<button @click="handler">事件二</button>
<button @click="eventHandler">获取原生事件对象</button>
<button @click="arguHandler(5,5)">事件参数</button>
<button @click="arguEventHandler( 5,$event )">事件参数里面有事件对象</button>

修饰符

事件修饰符
 <div class="big" @click.self="bigHandler">
    <div class="middle" @click.self="middleHandler">
        <div class="small" @click.self="smallHandler">
        </div>
    </div>
</div>

.stop
.prevent
.capture
.self
.once
.passive
//修饰符可以串联
v-on:click.stop.prevent
//Vue 还对应 addEventListener 中的 passive选项提供了 .passive 修饰符
键盘修饰符
<input type="text" @keyup.enter="getInputVal">
<input type="text" @keyup.13="getInputVal">

.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
使用 keyCode 特性也是允许的:
<input v-on:keyup.13="submit">

自定义事件

  • 自定义事件 - node.js的events模块
  • 事件的发布 $on 发布【 声明一个事件 】
  • 事件的订阅 $emit 订阅【 触发一个事件 】
<!-- 自定义事件 -->
<button @click="myEvent"> 自定义事件 </button>

 methods: {
            myEvent() {
                vm.$emit('a1', 100)
            }
        }
        
        
vm.$on('a1', function(val) {
        console.log('a1' + val)
    })
        

一部分指令

  • v-pre
    • 跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。
 <p v-pre>
    {{ info }}
 </p>
 
 new Vue({
        el: '#app',
        data: {
            info: '666666'
        }
    })
    
    输出:{{ info }}
    
  • v-cloak
    • 这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。
<style>
    [v-cloak] {
      display: none;
    }
  </style>
  
  
  new Vue({
    el: '#app',
    data: {
      info: 'Hello 骏哥'
    }
  })
  • v-once
    • 只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。
<div id="app">
    <input type="text" v-model = "num">
    <p v-once> {{ num }} </p>
  </div>
  
  
   new Vue({
    el: '#app',
    data: {
      num: 0
    }
  })

自定义指令

自定义指令有两种定义形式
1. 全局定义
2. 局部定义

 <div id="root">
        <!-- <input type="text" v-focus.stop = "info"> -->
        <input type="text" v-my-focus>
 </div>

一、全局定义

// Vue.directive( 指令名称, 指令的配置选项 )
// /*  v-focus  */
Vue.directive('focus', {
        /* 每一个选项中都有四个参数 */
        bind: function() { //当指令绑定到dom元素时触发
            console.log('bind')
        },
        inserted: function(el, b, c, d) { // 当指令绑定的dom元素插入页面时触发
            console.log("兵哥: el", el) //这个就是指令绑定的dom
            el.focus()
                // el.style.background = 'red'
            console.log("兵哥: b", b)
            if (b.modifiers.stop) {
                //true 
                el.style.background = 'green'
            } else {
                //false 
                el.style.background = 'red'
            }

            el.value = b.expression
            console.log("兵哥: c  -  vNode", c)
            console.log("兵哥: d  - oldVNode", d)
        }
    })

二、局部定义

    new Vue({
         el: '#app',
         data: {
             info: '焦点'
         },
         directives: {
             // 指令名称:选项
            'my-focus': {
                 inserted: function(el) {
                     el.focus()
                 }
             }
         }
     })

axios

前端模拟数据形式

<button @click = "getMockData"> Mock数据 </button>
<button @click = "getJsonPlaceHolder"> JsonPlaceholder </button>



methods: {
      getMockData () {
        // axios.get( url, 配置项 ).then().catch()
        axios.get('./mock/data/data.json')
          .then( res => {
            console.log( res )
          })
          .catch( err => console.log( err ))
      },
      getJsonPlaceHolder () {
        axios.get('http://jsonplaceholder.typicode.com/albums')
          .then( res => {
            console.log( res )
          })
          .catch( err => console.log( err ))
      }
     }

后端接口形式

<button @click = "register"> 后端接口 - 注册 </button>
<button @click = 'login'> 后端接口 - 登录 </button>
<button @click = "shop"> 后端接口 - shop </button>

method:{
 shop () {
        axios.get(`${ DEV_BACK_URL }/shop`,{
          params: { //get请求携带参数
            a: 1,
            b: 2
          }
        }).then( res => {
          console.log( res )
        }).catch( error => console.log( error ))
      },
      register () {
        // axios.post(url,config).then().catch()
        const p = new URLSearchParams() //得到参数携带对象
        // p.append( 参数,参数值 )
        p.append( 'username','张骏' )
        p.append( 'password','123' )
        p.append( 'name','骏哥' )
        axios({
          url: `${ DEV_BACK_URL }/register`,
          data: p,// post请求携带参数的配置项
          method: 'POST',
          withCredentials: true,
        }).then( res => console.log( res ))
          .catch( err => console.log( err ))
      },
      login () {
        axios.post(`${ DEV_BACK_URL }/login`,{
          username: '张三',
          password: '123'
        }).then( res => {
          console.log( res )
        }).catch( err => console.log( err ))
      }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值