13 Vue事件处理

為{幸葍}努か 提交于 2019-12-05 00:05:51

监听事件

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

示例:

<div id="example-1">
  <button v-on:click="counter += 1">Add 1</button>
  <p>The button above has been clicked {{ counter }} times.</p>
</div>
var example1 = new Vue({
  el: '#example-1',
  data: {
    counter: 0
  }
})

own:

<div id="app">
     <!--v-show的用法 -->
        <img v-bind:[mysrc]='show' v-bind:alt='time'></img>
        <!-- isGreen 是用来判断,如果有值我就显示box2 -->
        <div class="box" v-bind:class='{box2:isGreen}'></div>

        <button @click="clickHandler">切换图片</button>
        <button @click="changeColor">切换颜色</button>
        <button @click="count+=1">加{{count}}</button>
        
    </div>

    <script src="./js/vue.js"></script>

    <script>
    var app = new Vue({
     el:'#app',
     data:{
        title:'土豆',
        show:"./images/111.jpg",
        //获取一个当前时间
        time:`页面加载于${new Date().toLocaleDateString()}`,
        isGreen:false,
        mysrc:'src',
        count:0,
     },

 

 

 

 

 

 

事件处理方法( 代码写在 v-on 指令中是不可行的)

然而许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的

因此 v-on 还可以接收一个需要调用的方法名称。

<body>
<div id = 'my_event'>
    <button v-on:click="gret">点我</button>

</div>

<script src="./js/vue.js"></script>

<script>
var myevent = new Vue({
    el: '#my_event',
    data:{
        name:'riven',

    },
    //在methods对象中定义方法
    methods:{
        //event =[object MouseEvent] 当前鼠标点击的对象
        gret:function(event){
            alert("你好"+this.name+'!');
            if(event){
                //进行判断后 他会触发2次操作
                alert(event.target.tagName)
            }
        }
    }
})
</script>
</body>
//也可以直接调用 但是不触发event事件
myevent.gret()

 

 

内联处理器中的方法

除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法

<div id="example-3">
  <button v-on:click="say('hi')">Say hi</button>
  <button v-on:click="say('what')">Say what</button>
</div>
new Vue({
  el: '#example-3',
  methods: {
    say: function (message) {
      alert(message)
    }
  }
})

 

own:

<body>
    <div id='my_test'>
        <!-- 将hi作为参数传给函数处理 -->
        <button v-on:click="say('hi')">说嗨</button>
        <!-- 将what作为参数传给函数处理 -->
        <button v-on:click="say('what')">说什么</button>

    </div>

<script src="./js/vue.js"></script>
<script>

var test=new Vue({
    el:'#my_test',
    data:{

    },
    methods:{
        //通过传进来的参数进行判断,并执行相关操作
        say:function(message){
            alert(message)
        }
    }
})
</script>
</body>

 

 

 

 有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法:

<button v-on:click="warn('Form cannot be submitted yet.', $event)">
  Submit
</button>
// ...
methods: {
  warn: function (message, event) {
    // 现在我们可以访问原生事件对象
    if (event) event.preventDefault()
    alert(message)
  }
}
<body>
    <div id='my_test'>
            <!-- 可以用特殊变量 $event 把它传入方法 -->
    <button v-on:click="warn('我喜欢看中文.', $event)">
                    Submit
    </button>

    </div>

<script src="./js/vue.js"></script>
<script>

var test=new Vue({
    el:'#my_test',
    data:{

    },
    methods:{
        //通过传进来的参数进行判断,并执行相关操作
        warn:function(message,event){
            //现在我们可以访问原生事件对象
            if(event) {
                alert(message)
            }
        }
    }
})
</script>
</body>

 

 

 

 

 123456578653

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!