vue日常指令总结

2019-08-27  本文已影响0人  June_Done
// 子组件 w-input.vue  
<template>
    <input type="text" :value="value" @input="handleInput"> 
</template>
export default {
    props:['value'],
   methods:{
      handleInput(e){
           this.$emit('input', e.target.value)
      }
    }
}
  1. :value 将 该input框的value值和从父元素传入的value值做绑定(父元素中的value变化导致input框的value值变化)
  2. @input 使用emit 调用父元素的input事件,并将event.target.value(也就是这个input框的value值)传过去
// 父组件
<w-input v-model="value"></w-input>
// 解析v-model: argument[0]是子组件$emit传出来的e.target.value
<w-input :value = value @input = "value = getval"></w-input>
export default {
    data:{
      return{
          value:'123'
      }
    },
    methods:{
        getval:function(v){
            this.value = v
        }
    }
 }

当组件中子元素调用父元素的Input方法时,相当于调用了 getval($event.target.value) 修改了父元素的val值
还有一些其他的功能:

// 子组件 w-input.vue  
<template>
    <input type="checkbox" :value="value1" @input="handleInput"> 
</template>
export default {
  model:{
      prop:'value1',
      event:'change'
   },
   props:['value1'],
   methods:{
      handleInput(e){
           this.$emit('change', e.target.value)
      }
    }
}

<div :class="{active:isActive}"></div>  
<div :class="[ isActive ? 'active' : ' ' ]"></div>   //或者
<div :class="[{active:isActive}]"></div>      //或者

data:{
    isActive:false;
  }
<p id="test" v-text="'我叫'+student.name+',今年'+student.age+'岁啦'"></p>
<!--解析结果 - START-->
<p>我叫11,今年24岁啦</p>
<!--解析结果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      student : {
        name : "11",
        age : 24
      }
    }
  });
</script>
<div id="test">
  <p v-text="student.name"></p>
  <p v-text="student.image"></p>
  <p v-html="student.name"></p>
  <p v-html="student.image"></p>
</div>
<!--解析结果 - START-->
<div>
  <p>傻屌</p>
  <p><img src='shadiao.jpg'/></p><!--原样输出了文字-->
  <p>傻屌</p>
  <p>图片</p><!--正确显示了图片-->
</div>
<!--解析结果 - END-->
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      student : {
        name : "傻屌",
        image : "<img src='shadiao.jpg'/>"
      }
    }
  });
</script>
<style type="text/css">
  [v-cloak]{display:none;}
</style>
<div id="test">
  <p v-pre>{{one}}</p><!--直接显示:{{one}}-->
  <p v-cloak>{{two}}</p><!--obj编译完成后才显示:二号-->
  <p v-once>{{three}}</p><!--始终显示:三号-->
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      one : "一",
      two : "二",
      three : "三"
    }
  });
  setTimeout("obj.three = '变一下'",1000);
</script>

参考:https://www.cnblogs.com/lynshxs/p/9890770.html

上一篇 下一篇

猜你喜欢

热点阅读