vue:v-on和v-model指令
v-on指令很简单,当我们写完一个函数以后,可以在对应标签(一般是类型为button的input标签)上绑定我们自己编写的函数。
例如:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Title</title> </head> <body> <div id="app"> <input type="button" value="click" @click="doProgram"> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", methods:{ doProgram:function () { console.log('当码农好啊,夏天脑袋上贼凉快,真的。'); } } }) </script> </body> </html>

但这太简单了,显然不是我们想要学习并掌握的全部,我们来给它加几个参数看看!
<body> <div id="app"> <input type="button" value="click" @click="doProgram(666)"> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", methods:{ doProgram:function (p1) { console.log('当码农好啊,夏天脑袋上贼凉快,真的。'); console.log(p1); } } }) </script> </body>
此时,我给doProgram这个函数加上了一个参数,并在点击事件中传了值:666,并在函数中实现了简单逻辑,其效果是显而易见的,我就不展示了。
当然也能实现多参数传递,例如字符串也是可以的,这下我要展示了,看看!
我的doProgram函数现在是这样子的:doProgram(666,'你再骂!?'),当然在script中的代码也要做对应修改。
特别注意这里是单引号!因为这是在html模板中,前面已经有一个双引号了!一开始我就因为没有写单引号,而导致多了一个666.现在长这样:

好了,现在还有事件修饰符!我们可以实现按下回车键后,就会弹出一个框。
当然需要keyup.enter!这个enter是回车的意思啦!
<body> <div id="app"> <input type="button" value="click" @click="doProgram(666, '你再骂!?')"> <input type="text" @keyup.enter="sayHi"> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", methods:{ doProgram:function (p1, p2) { console.log('当码农好啊,夏天脑袋上贼凉快,真的。'); console.log(p1); console.log(p2); }, sayHi:function () { alert('40米大刀藏不住了'); } } }) </script> </body>
就这样:

鉴于v-model指令比较简单(其实都很简单),就放这里一并写了。
v-model这个指令的作用是双向奔赴,也就是:设置和获取表单元素的值,进行双向数据绑定。
简单地说,就是比如你搞一个文本框,在里面随便打一些字,那么这个时候其实在下面的script中的数据也是同步改变的。
举个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Vue</title> </head> <body> <div id="app"> <input type="text" v-model="message"> <h2>{{ message }}</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ message:"Evan!", }, methods:{ } }) </script> </body> </html>
在数据中有一个message,我在h2标签中渲染了message,同事在input标签中用v-model给关联了起来,那么这个时候,你就会发现:



知道了吧,上下是会同时变的!
接下来我们来获取:
为了获取这个值,我们使用上一节讲过的v-on指令,为此,需要写一个函数getInfo.这个函数的功能,就是弹框,弹出message的内容。此外,在input标签上,加上keyup.enter来绑定这个函数,我们希望在随便打一些字并按下回车之后,能弹出我们刚刚打的内容。
<body> <div id="app"> <input type="text" v-model="message" @keyup.enter="getInfo"> <h2>{{ message }}</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ message:"Evan!", }, methods:{ getInfo:function () { alert(this.message); } } }) </script> </body>
来看效果:

自然,我们也是可以修改message的值的!
来看:
我设置一个修改message值的函数,并添加一个按钮,点击按钮,那么对应地方的message值就应该被修改。
<body> <div id="app"> <input type="button" value="click to modify" @click="setInfo"> <input type="text" v-model="message" @keyup.enter="getInfo"> <h2>{{ message }}</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var app = new Vue({ el:"#app", data:{ message:"Evan!", }, methods:{ getInfo:function () { alert(this.message); }, setInfo:function () { this.message = "世界!"; } } }) </script> </body>

刚开始是这样,注意看别眨眼!

太神奇啦!米奇妙妙屋啊,太妙啦!

浙公网安备 33010602011771号