vue绑定事件


vue绑定事件

基本绑定

方法必须定义在 vue 的 Methods 对象中, 注意复数

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--view层:模版-->
<div id="app-4">
    <button v-on:click="sayHi">click me</button>
</div>

<!-- 导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app4 = new Vue({
        el: '#app-4',
        data: {
            msg: "hello, vue!"
        },
        methods: {  //方法必须定义在 vue 的 Methods 对象中
            sayHi: function () {
                alert(this.msg);
            }
        }
    })
</script>

</body>
</html>

双向绑定

vue.js是一个MVVM框架,即数据双向绑定,这是VUE的核心

为何要使用双向绑定?

在vue.js中,如果使用vuex,实际上数据还是单向的,但是对于UI控件来说,比如处理表单,使用双向绑定就特别舒服了。一般在全局性数据使用单向绑定,方便跟踪;对于局部数据使用双向绑定,简单易操作。

在表单中使用双向绑定

你可以用 v-model 指令在表单 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

注意:v-model 会忽略所有表单元素的 value、checked、selected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。

具体实现

输入文本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--view层:模版-->
<div id="app-4">
    input: <input type="text" v-model="msg1"> {{msg1}}<br/><br/><br/>

</div>

<!-- 导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app4 = new Vue({
        el: '#app-4',
        data: {
            msg1: "111"
        }
    })
</script>


</body>
</html>

多行文本

<!--view层:模版-->
<div id="app-4">
    input: <textarea type="text" v-model="msg2"></textarea> {{msg2}}<br/><br/><br/>

</div>

<!-- 导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app4 = new Vue({
        el: '#app-4',
        data: {
            msg2: "222"
        }
    })
</script>

单选

<!--view层:模版-->
<div id="app-4">

    性别:
    <input type="radio" name="sex" value="" v-model="sexInfo"><input type="radio" name="sex" value="" v-model="sexInfo">女
    选中了: {{sexInfo}}<br/><br/><br/>

</div>

<!-- 导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app4 = new Vue({
        el: '#app-4',
        data: {
            sexInfo: null
        }
    })
</script>

下拉框

如果 v-model 表达式的初始值未能匹配任何选项,

<!--view层:模版-->
<div id="app-4">
    下拉框:
    <select v-model="selected">
        <option value="" disabled>---请选择---</option>
        <option>A</option>
        <option>B</option>
        <option>C</option>
    </select>
    {{selected}}
</div>

<!-- 导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app4 = new Vue({
        el: '#app-4',
        data: {
            selected: ''
        }
    })
</script>

文章作者: Hailong Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hailong Gao !
评论
  目录