• 模板语法2


    目录

    一、事件处理器

    1.事件修饰符( Vue通过由点(.)表示的指令后缀来调用修饰符)

    ①阻止单击事件冒泡( .stop)

     ②click 事件只能点击一次(.once)

     ③按键修饰符

     二、组件及组件通信

    1、组件简介

    2、全局和局部组件

    3、简单组件

     4、父组件传参给子组件

    三、综合案例


    一、事件处理器

    1.事件修饰符( Vue通过由点(.)表示的指令后缀来调用修饰符)

    ①阻止单击事件冒泡( .stop)

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. <style type="text/css">
    8. .red{
    9. height: 400px;
    10. width: 400px;
    11. background-color: red;
    12. }
    13. .yellow{
    14. height: 300px;
    15. width: 300px;
    16. background-color: yellow;
    17. }
    18. .blue{
    19. height: 200px;
    20. width: 200px;
    21. background-color: blue;
    22. }
    23. .green{
    24. height: 100px;
    25. width: 100px;
    26. background-color: green;
    27. }
    28. style>
    29. head>
    30. <body>
    31. <div id="app">
    32. <div class="red" @click="red()">
    33. <div class="yellow" @click="yellow()">
    34. <div class="blue" @click="blue()">
    35. <div class="green" @click.stop="green">div>
    36. div>
    37. div>
    38. div>
    39. div>
    40. body>
    41. <script>
    42. new Vue({
    43. el:'#app',
    44. data(){
    45. return {
    46. msg:'666'
    47. }
    48. },
    49. methods:{
    50. red(){
    51. alert('red');
    52. },
    53. yellow(){
    54. alert('yellow');
    55. },
    56. blue(){
    57. alert('blue');
    58. },
    59. green(){
    60. alert('green');
    61. }
    62. }
    63. })
    64. script>
    65. html>

     ②click 事件只能点击一次(.once)

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <p>发送一次p>
    11. <input type="text" v-model="msg" />
    12. <button type="button" @click.once="dianwoshishi">点我试试button>
    13. div>
    14. body>
    15. <script>
    16. new Vue({
    17. el:'#app',
    18. data(){
    19. return {
    20. msg:'666'
    21. }
    22. },
    23. methods:{
    24. dianwoshishi(){
    25. alert(this.msg);
    26. }
    27. }
    28. })
    29. script>
    30. html>

     ③按键修饰符

    回车键触发

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <p>按键修饰符p>
    11. <input type="text" v-model="msg" @keyup.enter="dianwoshishi"/>
    12. div>
    13. body>
    14. <script>
    15. new Vue({
    16. el:'#app',
    17. data(){
    18. return {
    19. msg:'666'
    20. }
    21. },
    22. methods:{
    23. dianwoshishi(){
    24. alert(this.msg);
    25. }
    26. }
    27. })
    28. script>
    29. html>

     二、组件及组件通信

    1、组件简介

    ①组件(Component)是Vue最强大的功能之一

    ②组件可以扩展HTML元素,封装可重用的代码

    ③组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树

    2、全局和局部组件

          全局组件:Vue.component(tagName, options),tagName为组件名,options为配置选项。

          局部组件: new Vue({el:'#d1',components:{...}})

          注册后,我们可以使用以下方式来调用组件:

          

    3、简单组件

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <p>简单组件p>
    11. <my-button>my-button>
    12. div>
    13. body>
    14. <script>
    15. Vue.component('my-button',{
    16. template:''
    17. })
    18. new Vue({
    19. el:'#app',
    20. data(){
    21. return {
    22. msg:'666'
    23. }
    24. }
    25. })
    26. script>
    27. html>

     4、父组件传参给子组件

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. <p>父组件传参给子组件p>
    11. <my-button m='diandian' n='3' @mymethod="xxx">my-button>
    12. div>
    13. body>
    14. <script type="text/jscript">
    15. Vue.component('my-button',{
    16. template:'',
    17. props:['m','n'],
    18. methods:{
    19. sub(){
    20. var name="颠颠";
    21. var sex="男";
    22. var age=18;
    23. console.log(name);
    24. console.log(sex);
    25. console.log(age);
    26. //子传父将参数传递给父组件
    27. this.$emit('mymethod',name,sex,age);
    28. }
    29. }
    30. })
    31. new Vue({
    32. el:'#app',
    33. data(){
    34. return {
    35. msg:'666'
    36. }
    37. },
    38. methods:{
    39. xxx(a,b,c){
    40. console.log(a);
    41. console.log(b);
    42. console.log(c);
    43. }
    44. }
    45. })
    46. script>
    47. html>

    三、综合案例

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>title>
    6. <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js">script>
    7. head>
    8. <body>
    9. <div id="app">
    10. 姓名:<input type="text" v-model="uname" /><br>
    11. 密码:<input type="password" v-model="pwd"/><br>
    12. 性别:
    13. <input name="sex" type="radio" checked="checked">
    14. <input name="sex" type="radio"><br>
    15. 爱好:
    16. <div v-for="l in likes">
    17. <input v-model="hobby" type="checkbox" v-bind:value="l.id" />{{l.name}}
    18. div><br>
    19. 英语等级:
    20. <select v-model="selectedVal">
    21. <option v-for="e in englishs" :value="e.id">{{e.name}}
    22. option>
    23. select><br>
    24. <input type="checkbox" @click="show" />
    25. <input v-show="showFlag" @click="sub" type="button" value="ok" />
    26. div>
    27. body>
    28. <script>
    29. new Vue({
    30. el:'#app',
    31. data(){
    32. return {
    33. uname:null,
    34. pwd:null,
    35. sex:1,
    36. likes:[//数据源 复选框
    37. {id:1,name:'篮球'},
    38. {id:2,name:'足球'},
    39. {id:3,name:'桌球'},
    40. {id:4,name:'乒乓球'}
    41. ],
    42. englishs:[//数据源 下拉框
    43. {id:1,name:'优'},
    44. {id:2,name:'良'},
    45. {id:3,name:'差'}
    46. ],
    47. hobby:[],//用来存放选中的爱好
    48. selectedVal:0,
    49. showFlag:false
    50. }
    51. },
    52. methods:{
    53. show(){
    54. this.showFlag=true;
    55. },
    56. sub(){
    57. var obj={
    58. uname:this.uname,
    59. pwd:this.pwd,
    60. sex:this.sex,
    61. hobby:this.hobby,
    62. level:this.selectedVal
    63. }
    64. console.log(obj);
    65. }
    66. }
    67. })
    68. script>
    69. html>

     

  • 相关阅读:
    海康威视二次开发适配安卓电视盒子
    Kconfig内容(详细)总结附示例快速掌握
    【JavaScript高级】Proxy和Reflect
    高效率开发Web安全扫描器之路(一)
    知物由学 | “群控软件”助长黑灰产套利的零和游戏,硬核技术打击隐秘的不公
    excel表中复制粘贴有隐藏行的情况
    java健身房信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    LeetCode 热题 HOT 100 第八十五天 560. 和为 K 的子数组 用python3求解
    【信号处理】基于均分原理的同步信号分割与建模附matlab代码
    【金三银四】哈啰Java实习一面
  • 原文地址:https://blog.csdn.net/yzq102873/article/details/126697708